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
4、将解压的java文件放到项目的libs文件夹中(没有就新建一个)
4、打开android studio 在项目根目录一module形式将这个push文件夹引用到项目中
5、在Application Module的build.gradle文件的dependencies
下添加compile project(':push')
。
注意:
- 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);
官方还有第二种方法这里我就说一下我是怎么做的
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) {
}
});
中间那一句是开始友盟的log日志建议先打开集成完成没有问题后删掉。
8、启动统计:在所有的Activity 的onCreate
方法或在应用的BaseActivity
的onCreate
方法中添加:
PushAgent.getInstance(context).onAppStart();
这里没有混淆详细官方文档有介绍。到这里就可以打包测试了。
踩坑
接下来说一下我菜的坑,所有的配置都完成了但是会报deviceToken为空 拿不到token,然后我我按照官方的给的解决错误的方法去查看我的Appkey和secret 没有问题然后是检查so文件是不是一样我解压之后项目的lib里面有好多,和我的不一样,但是我下载了全平台的依旧是有两个,还是会报这个错,然后我就查了搜怎么引入到项目中,最后在build.gradle文件里面的android下面的ndk里面加了这个就好了(如图)
下面的有可能在项目中没有,但是上面ndk引入了这个就好了到此才知道上面没理解的话。
自己集成过程记录一下。