React Native 集成友盟推送(android)

时间:2024-04-04 11:40:15

react native 友盟推送集成其实很简单

首先使用的react native版本为0.51.0 (项目的版本是这个所以。。。)这里记录一下个人的集成过程

官方文档链接:https://developer.umeng.com/docs/66632/detail/98585

1、到友盟官方平台注册账号创建app得到推送需要的 Appkey Umeng Message Secret(而不是 App Master Secret)

2、友盟官方SDK中心 下载咱们需要的sdk,这里下载的是android的推送SDK。因为友盟官方没有提供react-native直接相关sdk,当然我们也要下载React Native的SDK这个里面包含RN的桥接文件。

3、解压下载的压缩包拿到push的sdk

React Native 集成友盟推送(android)

4、将解压的java文件放到项目的libs文件夹中(没有就新建一个)

React Native 集成友盟推送(android)

4、打开android studio 在项目根目录一module形式将这个push文件夹引用到项目中

React Native 集成友盟推送(android)

5、在Application Module的build.gradle文件的dependencies下添加compile project(':push')

React Native 集成友盟推送(android)

注意:

  • PushSDK 4.0默认只提供armeabi和x86两种so文件夹,若主工程中的so文件夹与PushSDK下的so文件夹不一致,则可以有两种方式处理(选择一种即可):(1) 删除主工程下多余的so文件夹,与PushSDK下的so文件夹保持一致。(2) 下载全平台so文件,添加缺少的so文件夹至PushSDK模块的libs目录下,使PushSDK的so文件夹与主工程的so文件夹保持一致。全平台SO文件下载

这是官网的提醒很重要,当时在这里摔的不轻,什么意思我当时没太看懂所以就跳过去了。。。后面我会详细的说我菜的坑

6、现在开始初始化,使用友盟push必须在工程的自定义Application类的 onCreate() 方法中调用基础组件包提供的初始化函数。

UMConfigure.init(Context context, String appkey, String channel, int deviceType, String pushSecret);

React Native 集成友盟推送(android)

官方还有第二种方法这里我就说一下我是怎么做的

7、注册推送服务,务必在工程的自定义Application类的 onCreate() 方法中注册推送服务,无论推送是否开启都需要调用此方法:

PushAgent mPushAgent = PushAgent.getInstance(this);
//注册推送服务,每次调用register方法都会回调该接口
mPushAgent.register(new IUmengRegisterCallback() {

    @Override
    public void onSuccess(String deviceToken) {
        //注册成功会返回deviceToken
    }

    @Override
    public void onFailure(String s, String s1) {

    }
});

React Native 集成友盟推送(android)

中间那一句是开始友盟的log日志建议先打开集成完成没有问题后删掉。

8、启动统计:在所有的Activity 的onCreate 方法或在应用的BaseActivityonCreate方法中添加:

 PushAgent.getInstance(context).onAppStart();

React Native 集成友盟推送(android)

这里没有混淆详细官方文档有介绍。到这里就可以打包测试了。

踩坑

接下来说一下我菜的坑,所有的配置都完成了但是会报deviceToken为空  拿不到token,然后我我按照官方的给的解决错误的方法去查看我的Appkey和secret 没有问题然后是检查so文件是不是一样我解压之后项目的lib里面有好多,和我的不一样,但是我下载了全平台的依旧是有两个,还是会报这个错,然后我就查了搜怎么引入到项目中,最后在build.gradle文件里面的android下面的ndk里面加了这个就好了(如图)React Native 集成友盟推送(android)

下面的有可能在项目中没有,但是上面ndk引入了这个就好了到此才知道上面没理解的话。

自己集成过程记录一下。