HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

sentry for uniapp, 支持微信 支付宝 百度 抖音等小程序,并新增快应用的支持

用于小程序平台及快应用的 Sentry SDK

功能特点

  • [x] 基于 sentry-javascript 最新的基础模块 封装
  • [x] 遵守官方统一的 API 设计文档,使用方式和官方保持一致
  • [x] 使用 TypeScript 进行编写
  • [x] 包含 Sentry SDK(如:@sentry/browser)的所有基础功能
  • [x] 支持 ES6CommonJS 两种模块系统(支持小程序原生开发方式、使用小程序框架开发方式两种开发模式下使用)
  • [x] 默认监听并上报小程序的 onError、onUnhandledRejection、onPageNotFound、onMemoryWarning 事件返回的信息(各事件支持程度与对应各小程序官方保持一致)
  • [x] 默认上报运行小程序的设备、操作系统、应用版本信息
  • [x] 支持微信小程序
  • [x] 支持微信小游戏
  • [x] 支持字节跳动小程序
  • [x] 支持支付宝小程序
  • [x] 支持钉钉小程序
  • [x] 支持百度小程序
  • [x] 支持快应用
  • [x] 支持在 Taro 等第三方小程序框架中使用
  • [x] 默认上报异常发生时的路由栈
  • [ ] 完善的代码测试

支持两种使用方式:

  • 直接引用
  • 通过 npm 方式使用(推荐)

npm 方式

注意:目前字节跳动小程序不支持 npm 方式。

  1. 安装依赖

    npm install sentry-uniapp --save  
    # 或者  
    yarn add sentry-uniapp  
  2. 使用「微信开发者工具 - 工具 - 构建 npm」进行构建,详情可参考npm 支持

  3. app.js 中引用并初始化 Sentry,根据实际需求设置上报到 Sentry 的元信息

    import * as Sentry from "sentry-uniapp";  
    
    // init Sentry  
    // init options: https://github.com/getsentry/sentry-javascript/blob/master/packages/types/src/options.ts  
    Sentry.init({  
     dsn: "__DSN__",  
     // ...  
    });  
    
    // Set user information, as well as tags and further extras  
    Sentry.configureScope((scope) => {  
     scope.setExtra("battery", 0.7);  
     scope.setTag("user_mode", "admin");  
     scope.setUser({ id: "4711" });  
     // scope.clear();  
    });  
    
    // Add a breadcrumb for future events  
    Sentry.addBreadcrumb({  
     message: "My Breadcrumb",  
     // ...  
    });  
    
    // Capture exceptions, messages or manual events  
    Sentry.captureException(new Error("Good bye"));  
    Sentry.captureMessage("Hello, world!");  
    Sentry.captureEvent({  
     message: "Manual",  
     stacktrace: [  
       // ...  
     ],  
    });  

开发

知识储备

开发前请仔细阅读下面内容:

相关命令


# 根据 package.json 中的版本号更新 SDK 源码中的版本号  
npm run version  

# 构建供小程序直接引用的 sentry-uniapp.xx.min.js;在本地可直接使用开发者工具打开 examples 下具体项目进行调试  
npm run build:dist  

# 构建用于发布到 npm 的 dist & esm 资源  
npm run build  

# 构建用于发布到 npm 的 esm 资源  
npm run build:esm  
继续阅读 »

用于小程序平台及快应用的 Sentry SDK

功能特点

  • [x] 基于 sentry-javascript 最新的基础模块 封装
  • [x] 遵守官方统一的 API 设计文档,使用方式和官方保持一致
  • [x] 使用 TypeScript 进行编写
  • [x] 包含 Sentry SDK(如:@sentry/browser)的所有基础功能
  • [x] 支持 ES6CommonJS 两种模块系统(支持小程序原生开发方式、使用小程序框架开发方式两种开发模式下使用)
  • [x] 默认监听并上报小程序的 onError、onUnhandledRejection、onPageNotFound、onMemoryWarning 事件返回的信息(各事件支持程度与对应各小程序官方保持一致)
  • [x] 默认上报运行小程序的设备、操作系统、应用版本信息
  • [x] 支持微信小程序
  • [x] 支持微信小游戏
  • [x] 支持字节跳动小程序
  • [x] 支持支付宝小程序
  • [x] 支持钉钉小程序
  • [x] 支持百度小程序
  • [x] 支持快应用
  • [x] 支持在 Taro 等第三方小程序框架中使用
  • [x] 默认上报异常发生时的路由栈
  • [ ] 完善的代码测试

支持两种使用方式:

  • 直接引用
  • 通过 npm 方式使用(推荐)

npm 方式

注意:目前字节跳动小程序不支持 npm 方式。

  1. 安装依赖

    npm install sentry-uniapp --save  
    # 或者  
    yarn add sentry-uniapp  
  2. 使用「微信开发者工具 - 工具 - 构建 npm」进行构建,详情可参考npm 支持

  3. app.js 中引用并初始化 Sentry,根据实际需求设置上报到 Sentry 的元信息

    import * as Sentry from "sentry-uniapp";  
    
    // init Sentry  
    // init options: https://github.com/getsentry/sentry-javascript/blob/master/packages/types/src/options.ts  
    Sentry.init({  
     dsn: "__DSN__",  
     // ...  
    });  
    
    // Set user information, as well as tags and further extras  
    Sentry.configureScope((scope) => {  
     scope.setExtra("battery", 0.7);  
     scope.setTag("user_mode", "admin");  
     scope.setUser({ id: "4711" });  
     // scope.clear();  
    });  
    
    // Add a breadcrumb for future events  
    Sentry.addBreadcrumb({  
     message: "My Breadcrumb",  
     // ...  
    });  
    
    // Capture exceptions, messages or manual events  
    Sentry.captureException(new Error("Good bye"));  
    Sentry.captureMessage("Hello, world!");  
    Sentry.captureEvent({  
     message: "Manual",  
     stacktrace: [  
       // ...  
     ],  
    });  

开发

知识储备

开发前请仔细阅读下面内容:

相关命令


# 根据 package.json 中的版本号更新 SDK 源码中的版本号  
npm run version  

# 构建供小程序直接引用的 sentry-uniapp.xx.min.js;在本地可直接使用开发者工具打开 examples 下具体项目进行调试  
npm run build:dist  

# 构建用于发布到 npm 的 dist & esm 资源  
npm run build  

# 构建用于发布到 npm 的 esm 资源  
npm run build:esm  
收起阅读 »

插件开发 | 插件需求 | 个人接单 | 多年uni原生插件开发| iOS+Android 。插件定制,欢迎骚扰

uniapp原生插件 插件开发 外包 插件需求

插件开发 | 插件需求 | 个人接单 | 多年uni原生插件开发| iOS+Android | 插件定制 | uniapp | 欢迎骚扰

uni原生插件 ! 个人接单!多年uni原生插件开发,原生sdk接入,iOS+Android。uni插件 5+插件,

小程序,uni前端,也可以~

阿里

           阿里认证              |            阿里oss上传              |         阿里播放器            
           支付宝资金预授权    |       一键登录                    |       阿里云短视频                
          阿里云风险控制        |    

百度

           百度播放器           |          文字识别                 |       百度统计          
           离线人脸识别    

腾讯

          人脸识别        |            超级播放器                 |   IM单聊+离线推送       
          短视频编辑       |        短视频制作    

支付类

        中金支付         |        全民支付                        |      nihaooPay        
         latiPay             |         funsionPau                  |    adyen drop-in    
          聚富通支付      |    

国外

          stripe pay    |   google map 谷歌地图  |    twitter登录   |    facebook登录/分享         
          微软授权登录   |   FB AppEvents        |   FCM 谷歌推送   |    firebase授权登录     
         google 登录    

android平台

           迅雷下载无限速             |       屏蔽短信     |       屏蔽通知             |  usb 串口  |   呼叫转移          
         android分片上传(byte)     |      华视身份证   |     获取通话记录       |    广告机 关机 重启 设置系统时间     
            DLNA                             |     悬浮窗截屏       |     获取通知         |     hainaIOT               
     isProxy(是否使用代理)     |      录制PCM      |     soundtouch(变声)     |       pcm 降噪     
     无障碍微信朋友圈多图分享   |        矩阵识别      |        RDPOrigin          |         rfid                
              sicpay支付                   |     nihaoPay支付  |       ios 裁剪               |      字节美颜组件       
          linphone  sip    |      快手分享sdk     |          快手登录sdk     |       极光分享    |       极光短信        
           极光认证       |         极光统计         |         汉枫配网 (SmartLink  )       |     华为畅联(CaasKit)    
          助听器 耳返     |       otg 单反相机     |        TuyaSDK            |         Paddle文字识别            
            个推统计         |      自动通话录音       |       来电自动接听       |      mqtt双向认证         
            vpn                |          openvpn         |       禁止 app 联网       |        获取单反相机照片 Nikon    

ios 平台

       ios 后台播放               |     ios后台持续录音    |    ios后台定位      |      录制PCM     |   NFC读写        
        高精度图片扫码             |             矩阵识别        |       nihaoPay支付  |   ios  healthkit (健康)        
       NEHotspot(设置wifi)  |       ios 裁剪   |   阿里云短视频制作          |        快手分享sdk        
           快手登录sdk               |     汉枫配网 (SmartLink  )       |  助听器 耳返   |    个推统计      
         mqtt双向认证     |     vpn                |          openvpn         |    

工具类

          svga播放器   |    ios Wifi ssid   Wifi mac地址  |      高德导航组件   |    高德导航component         
          快递单号识别 读取  |      手机号码识别    |     经典蓝牙2.0     nRF DFU SDK  |   android dfu      
          ios dfu     |  蓝牙空中升级         |    ios 后台录音     
          虹软人脸识别     |     蓝牙耳机录音   |      摄像头预览组件    |          录制PCM     |      两端录屏       
           拦截截图      |        迅雷下载(不限速)      |      微信分享第三方来源      |        yuqueAD(广告)       
         mobAD(广告)    |        矩阵识别               |       助听器 耳返               |       友盟统计        
          个推统计 (个数统计)   |            自动通话录音       |       来电自动接听    |     控制其他app联网                      

音视频类
萤石云直播与回放 | 环信视频通话 | 美摄拍摄 | 环信音视频通话 | 音视频合成 | 腾讯推拉流

      金山云推拉流          |       美狐美颜        |       字节美颜      |      相芯美颜           |       相芯背景分割    

等等等等。。。。。

QQ 2253764427

QQ群 : 2253764427( uniapp原生插件开发 )

欢迎骚扰~

继续阅读 »

插件开发 | 插件需求 | 个人接单 | 多年uni原生插件开发| iOS+Android | 插件定制 | uniapp | 欢迎骚扰

uni原生插件 ! 个人接单!多年uni原生插件开发,原生sdk接入,iOS+Android。uni插件 5+插件,

小程序,uni前端,也可以~

阿里

           阿里认证              |            阿里oss上传              |         阿里播放器            
           支付宝资金预授权    |       一键登录                    |       阿里云短视频                
          阿里云风险控制        |    

百度

           百度播放器           |          文字识别                 |       百度统计          
           离线人脸识别    

腾讯

          人脸识别        |            超级播放器                 |   IM单聊+离线推送       
          短视频编辑       |        短视频制作    

支付类

        中金支付         |        全民支付                        |      nihaooPay        
         latiPay             |         funsionPau                  |    adyen drop-in    
          聚富通支付      |    

国外

          stripe pay    |   google map 谷歌地图  |    twitter登录   |    facebook登录/分享         
          微软授权登录   |   FB AppEvents        |   FCM 谷歌推送   |    firebase授权登录     
         google 登录    

android平台

           迅雷下载无限速             |       屏蔽短信     |       屏蔽通知             |  usb 串口  |   呼叫转移          
         android分片上传(byte)     |      华视身份证   |     获取通话记录       |    广告机 关机 重启 设置系统时间     
            DLNA                             |     悬浮窗截屏       |     获取通知         |     hainaIOT               
     isProxy(是否使用代理)     |      录制PCM      |     soundtouch(变声)     |       pcm 降噪     
     无障碍微信朋友圈多图分享   |        矩阵识别      |        RDPOrigin          |         rfid                
              sicpay支付                   |     nihaoPay支付  |       ios 裁剪               |      字节美颜组件       
          linphone  sip    |      快手分享sdk     |          快手登录sdk     |       极光分享    |       极光短信        
           极光认证       |         极光统计         |         汉枫配网 (SmartLink  )       |     华为畅联(CaasKit)    
          助听器 耳返     |       otg 单反相机     |        TuyaSDK            |         Paddle文字识别            
            个推统计         |      自动通话录音       |       来电自动接听       |      mqtt双向认证         
            vpn                |          openvpn         |       禁止 app 联网       |        获取单反相机照片 Nikon    

ios 平台

       ios 后台播放               |     ios后台持续录音    |    ios后台定位      |      录制PCM     |   NFC读写        
        高精度图片扫码             |             矩阵识别        |       nihaoPay支付  |   ios  healthkit (健康)        
       NEHotspot(设置wifi)  |       ios 裁剪   |   阿里云短视频制作          |        快手分享sdk        
           快手登录sdk               |     汉枫配网 (SmartLink  )       |  助听器 耳返   |    个推统计      
         mqtt双向认证     |     vpn                |          openvpn         |    

工具类

          svga播放器   |    ios Wifi ssid   Wifi mac地址  |      高德导航组件   |    高德导航component         
          快递单号识别 读取  |      手机号码识别    |     经典蓝牙2.0     nRF DFU SDK  |   android dfu      
          ios dfu     |  蓝牙空中升级         |    ios 后台录音     
          虹软人脸识别     |     蓝牙耳机录音   |      摄像头预览组件    |          录制PCM     |      两端录屏       
           拦截截图      |        迅雷下载(不限速)      |      微信分享第三方来源      |        yuqueAD(广告)       
         mobAD(广告)    |        矩阵识别               |       助听器 耳返               |       友盟统计        
          个推统计 (个数统计)   |            自动通话录音       |       来电自动接听    |     控制其他app联网                      

音视频类
萤石云直播与回放 | 环信视频通话 | 美摄拍摄 | 环信音视频通话 | 音视频合成 | 腾讯推拉流

      金山云推拉流          |       美狐美颜        |       字节美颜      |      相芯美颜           |       相芯背景分割    

等等等等。。。。。

QQ 2253764427

QQ群 : 2253764427( uniapp原生插件开发 )

欢迎骚扰~

收起阅读 »

Nvue动态更改titleNView的值onNavigationBarButtonTap监听不生效问题

nvue

onNavigationBarButtonTap(e) {

        const index = e.index  
        if (index == 0) {  

            console.log("点击了")  

        }   
    },  

setStyle(index, text) {
console.log(index, text)
let pages = getCurrentPages();
let page = pages[pages.length - 1];
// // // 添加文字过长截取为3个字符,请根据自己业务需求更改
if (text.length > 3) {
text = text.substr(0, 3) + '...';
}
console.log(index, text)
let currentWebview = page.$getAppWebview();
currentWebview.setTitleNViewButtonStyle(0, {
text: text,
redDot: false
});

        },
继续阅读 »

onNavigationBarButtonTap(e) {

        const index = e.index  
        if (index == 0) {  

            console.log("点击了")  

        }   
    },  

setStyle(index, text) {
console.log(index, text)
let pages = getCurrentPages();
let page = pages[pages.length - 1];
// // // 添加文字过长截取为3个字符,请根据自己业务需求更改
if (text.length > 3) {
text = text.substr(0, 3) + '...';
}
console.log(index, text)
let currentWebview = page.$getAppWebview();
currentWebview.setTitleNViewButtonStyle(0, {
text: text,
redDot: false
});

        },
收起阅读 »

uniapp webrtc 音视频通话即时通讯解决方案

webrtc

webrtc 这个百度能搜索到很多用法
我用的https://webrtc.github.io/adapter/adapter-latest.js 这个整合api
写了很多浏览器调用摄像头的hack 所以很好用
关于webrtc uniapp 的坑
1、video audio 不支持srcobject 播放数据流
2、video在app上的层级没有控制
3、video和audio的自动播放问题
于是用webview 在html上解决这些问题就比较简单了
然后通过vue与html 直接的交互解决页面交互和数据互通的问题

https://ext.dcloud.net.cn/plugin?id=9024
完整的demo 有不懂的可以问我

继续阅读 »

webrtc 这个百度能搜索到很多用法
我用的https://webrtc.github.io/adapter/adapter-latest.js 这个整合api
写了很多浏览器调用摄像头的hack 所以很好用
关于webrtc uniapp 的坑
1、video audio 不支持srcobject 播放数据流
2、video在app上的层级没有控制
3、video和audio的自动播放问题
于是用webview 在html上解决这些问题就比较简单了
然后通过vue与html 直接的交互解决页面交互和数据互通的问题

https://ext.dcloud.net.cn/plugin?id=9024
完整的demo 有不懂的可以问我

收起阅读 »

20分钟学会写uni-app小程序 - vue、uniCloud 前端后端一体开发以及留言板小案例演示

unicloud入门教程 uni_app项目

一期学会写uni-app小程序 - vue、uniCloud 前端后端一体开发以及留言板小案例演示
https://www.bilibili.com/video/BV1eT411L7yj/

一期学会写uni-app小程序 - vue、uniCloud 前端后端一体开发以及留言板小案例演示
https://www.bilibili.com/video/BV1eT411L7yj/

web开发工程师找兼职

本人2年游戏客户端开发经验,4年web开发经验,公司空闲时间比较多,现找web开发兼职,app、h5、微信小程序、数据可视化项目都可以, cocos creator的小游戏也可接 , 微信号:Bill_Dong_web

本人2年游戏客户端开发经验,4年web开发经验,公司空闲时间比较多,现找web开发兼职,app、h5、微信小程序、数据可视化项目都可以, cocos creator的小游戏也可接 , 微信号:Bill_Dong_web

uni原生插件注册

不用创建json文件的另外一种注册方式
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
try {
UniSDKEngine.registerModule("TestModule", TestModule.class);
} catch (UniException e) {
e.printStackTrace();
}
}
}

继续阅读 »

不用创建json文件的另外一种注册方式
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
try {
UniSDKEngine.registerModule("TestModule", TestModule.class);
} catch (UniException e) {
e.printStackTrace();
}
}
}

收起阅读 »

拓扑新动画效果,可拖拽,可滚轮缩放。

canvas

canvas拓扑动画
展示效果网址 http://jstopo.top

!展示视频

         init(){  
            this.domRef = this.$refs.canvas;  
            this.w = this.domRef.width = this.domRef.clientWidth,  
            this.h = this.domRef.height = this.domRef.clientHeight;  
            this.ctx = this.domRef.getContext("2d");  
            this.ctx.textAlign = "center";  
            this.ctx.textBaseline = "top";  
            this.ctx.font = "18px 黑体";  
            this.dotMove();  
        },
继续阅读 »

canvas拓扑动画
展示效果网址 http://jstopo.top

!展示视频

         init(){  
            this.domRef = this.$refs.canvas;  
            this.w = this.domRef.width = this.domRef.clientWidth,  
            this.h = this.domRef.height = this.domRef.clientHeight;  
            this.ctx = this.domRef.getContext("2d");  
            this.ctx.textAlign = "center";  
            this.ctx.textBaseline = "top";  
            this.ctx.font = "18px 黑体";  
            this.dotMove();  
        },
收起阅读 »

app-nvue webview加载本地网页,真机上路径错误

app-nvue webview加载本地网页,url不能携带参数(如:/hybrid/html/index.html?id=1 改为 /hybrid/html/index.html)。
数据传递使用webview通信。

webview官网:https://uniapp.dcloud.net.cn/component/web-view.html


<template>  
    <view>  
        <web-view ref="webview" class="webview" @onPostMessage="handlePostMessage"></web-view>  
        <button class="button" @click="evalJs">evalJs(改变webview背景颜色)</button>  
    </view>  
</template>  

<script>  
    export default {  
        data: {  
        },  
        methods: {  
            // webview向外部发送消息  
            handlePostMessage: function(data) {  
                console.log("接收到消息:"   JSON.stringify(data.detail));  
            },  
            // 调用 webview 内部逻辑和方法(方法挂载到window对象上)  
            evalJs: function() {  
                this.$refs.webview.evalJs(`方法名(${paramStr})`);  
            }  
        }  
    }  
</script>
继续阅读 »

app-nvue webview加载本地网页,url不能携带参数(如:/hybrid/html/index.html?id=1 改为 /hybrid/html/index.html)。
数据传递使用webview通信。

webview官网:https://uniapp.dcloud.net.cn/component/web-view.html


<template>  
    <view>  
        <web-view ref="webview" class="webview" @onPostMessage="handlePostMessage"></web-view>  
        <button class="button" @click="evalJs">evalJs(改变webview背景颜色)</button>  
    </view>  
</template>  

<script>  
    export default {  
        data: {  
        },  
        methods: {  
            // webview向外部发送消息  
            handlePostMessage: function(data) {  
                console.log("接收到消息:"   JSON.stringify(data.detail));  
            },  
            // 调用 webview 内部逻辑和方法(方法挂载到window对象上)  
            evalJs: function() {  
                this.$refs.webview.evalJs(`方法名(${paramStr})`);  
            }  
        }  
    }  
</script>
收起阅读 »

如何解决wap2app打包iOS后首页左滑退出APP

iOS 云端打包发布常见问题 wap2app

iOS中左滑是返回上一页的操作,如果是刚打开APP,使用左滑会导致退出APP。
可以使用以下方法屏蔽左滑操作。

Step1.修改sitemap.json文件
将global>webviewParameter节点插入:

"popGesture": "none",
继续阅读 »

iOS中左滑是返回上一页的操作,如果是刚打开APP,使用左滑会导致退出APP。
可以使用以下方法屏蔽左滑操作。

Step1.修改sitemap.json文件
将global>webviewParameter节点插入:

"popGesture": "none",
收起阅读 »

如何解决打包后wap2app顶部标题栏与APP首页内容重叠,真机调试中显示正常

云端打包发布常见问题 自定义导航栏 导航栏 wap2app

Step1.修改manifest.json文件

将plus>statusbar>immersed的值修改为"false"或"none"。

即:

"plus" : {  
......  
        "statusbar" : {  
            "immersed" : "none"  
        },  
......  
}

Step2.(可选)修改导航栏颜色样式

完成Step1后导航栏默认显示为灰色背景,黑色字体。

如需修改样式,请修改client_index.html文件。

在body标签中加入

        <script type="text/javascript">          
            if(window.plus)  
            {  
                plusReady()  
            }  
            else  
            {  
                document.addEventListener('plusready',plusReady,false)  
            }  
            function plusReady()  
            {  
                plus.navigator.setStatusBarBackground('#FFFFFF');  
                plus.navigator.setStatusBarStyle('dark');  
            }  
        </script>
继续阅读 »

Step1.修改manifest.json文件

将plus>statusbar>immersed的值修改为"false"或"none"。

即:

"plus" : {  
......  
        "statusbar" : {  
            "immersed" : "none"  
        },  
......  
}

Step2.(可选)修改导航栏颜色样式

完成Step1后导航栏默认显示为灰色背景,黑色字体。

如需修改样式,请修改client_index.html文件。

在body标签中加入

        <script type="text/javascript">          
            if(window.plus)  
            {  
                plusReady()  
            }  
            else  
            {  
                document.addEventListener('plusready',plusReady,false)  
            }  
            function plusReady()  
            {  
                plus.navigator.setStatusBarBackground('#FFFFFF');  
                plus.navigator.setStatusBarStyle('dark');  
            }  
        </script>
收起阅读 »