yz1311 / rn-bugly

bugly for react-native,支持统计,android支持应用全量升级
35 stars 6 forks source link

rn-bugly

npm version npm version

bugly for react-native,支持统计,android支持应用全量升级

安装

$ npm install rn-bugly --save

$ react-native link rn-bugly

新版RN会自动link,不需要执行link命令


不管是哪个版本的react-native,ios端都需要在ios文件夹下执行

$ cd ios
$ pod install

配置

iOS

AppDelegate.m

#import "RNBugly.h"
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  //初始化bugly,会自动读取info.plist中的参数
  [RNBugly startWithAppId];
  return YES;
}

info.plist文件读取SDK初始化参数,可配置的参数如下(除Appid为必填外,其它可选):

- Appid
    - Key: BuglyAppIDString
    - Value: 字符串类型
- 渠道标识
    - Key: BuglyAppChannelString
    - Value: 字符串类型
- 版本信息
    - Key: BuglyAppVersionString
    - Value: 字符串类型
- 开启Debug信息显示
    - Key: BuglyDebugEnable
    - Value: BOOL类型

Android

MainApplication.java(依旧可以用Bugly.init进行初始化,下面两个方法只是对Bugly.init的简单封装)

import com.reactlibrary.bugly.RNBuglyModule;

@Override
public void onCreate() {
  super.onCreate();

  ...

  ** 下面的方法根据情况二选一 **

  //参数解析:
  //参数1:上下文对象
  //参数2:注册时申请的APPID
  //参数3:是否开启debug模式,true表示打开debug模式,false表示关闭调试模式

  //初始化并且自动检查更新
  RNBuglyModule.init(getApplicationContext(),"注册时申请的APPID",false);

  //仅仅初始化(推荐使用该方法,所有的检查更新触发都在js端,更加灵活)
  RNBuglyModule.initWithoutAutoCheckUpgrade(getApplicationContext(),"注册时申请的APPID",false);
}

使用

import RNBugly from 'rn-bugly';

//如果上面采用的initWithoutAutoCheckUpgrade初始化,并且需要进入app的时候也自动检查更新,可以使用下面的方法手动检查更新
//官方原生的init初始化其实有3s的延迟时间,等待初始化完成,所以js端也需要等待3m后才能检查更新
setTimeout(()=>{
  RNBugly.checkUpgrade({
        isManual: false,
        isSilence: false
      });
},3000);

//点击按钮触发检查更新(一般在[关于]-[检查更新])
//此时早已初始化了,不需要延时
RNBugly.checkUpgrade({
        //该值为true的时候,会有toast提示,如果不需要提示,设置为false
        isManual: true,
        isSilence: false
      });

//获取更新信息
//注意:更新信息获取一次后会储存在本地,即使后台控制停止该版本更新,该方法依旧可以获取到数据
let updateInfo = await RNBugly.getUpgradeInfo();

//上报自定义异常信息
RNBugly.postException({
    errorMsg: 'login error',
    stack: 'sadasdasd\nzxzxsds',
    extraInfo: {
        userInfo: 'test',
        password: '12345'
    }
})

bugly后端异常信息如下:



其他方法及注释请查看: index.d.ts

参考demo,或者下载example.apk体验

注意事项&&疑问

1.无法使用?

请升级到最新版本后再试

目前对于React Native不用区分版本,直接使用最新版即可,只是安装方式略有不同

2.集成后全量更新无效果

请确定targetSDKVersion是否为28或者以上,bugly请求由于使用了http,而android 9默认是不支持http请求的,需要调整下

具体请参考:

https://blog.csdn.net/weixin_34114823/article/details/88037177

在最新的1.1.0的版本中,依赖的官方sdk,已经支持https了,具体查看官方日志

3.为什么我点击更新按钮后,对话框关闭,啥反应都没有?

等一会会出现安装提示,bugly对的更新方式是直接在通知栏显示下载进度,下载完成覆盖安装,如果状态栏没有提示,那就是没有通知权限(oppo/vivo系统是默认不开启该权限的)

截图