React-native之友盟(UMeng)推送集成(超详细)(android版)
集成环境:
React-native: 0.61.5
Umeng push sdk:6.0.5
测试环境:
Android模拟器版本:5.x(成功)
Android真机版本:6.x、8.x、9.x(成功)(包括:红米、华为、VIVO)
集成开始:
注:这里要注意一下,最新的push sdk 是6.x的版本,也就是android公测版,不过这里可以放心下载,这个就是上线的正式版本,解决市面是最新机型(可以理解为andorid 6.0以后设备)收不到消息的问题,如果您下载的是6.x以下的sdk,会在现在的新手机上 收不到推送的消息
2.在项目android/app 下创建libs 文件夹,把下载的sdk放到libs目录下:
并在android/app/build.gradle 中加入如下代码:
android.useDeprecatedNdk=true
android {
...
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
工程中添加android-support-v4.jar支持包(v2.3.0以上),关于v4支持包的说明请参考:https://developer.android.com/topic/libraries/support-library/features.html#v4;
在AndroidManifest.xml中添加权限:
在application中添加如下内容:
android:name="com.taobao.accs.ChannelService" android:exported="true" android:process=":channel">
android:name="com.taobao.accs.data.MsgDistributeService" android:exported="true">
android:name="com.taobao.accs.EventReceiver" android:process=":channel">
android:name="com.taobao.accs.ServiceReceiver" android:process=":channel">
android:name="com.taobao.accs.internal.AccsJobService" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":channel"/> android:name="com.taobao.accs.ChannelService$KernelService" android:process=":channel" /> android:name="org.android.agoo.accs.AgooService" android:exported="true"> android:name="com.umeng.message.UmengIntentService" android:exported="true" android:process=":channel"> android:name="com.umeng.message.XiaomiIntentService" android:exported="true" android:process=":channel"> android:name="com.taobao.agoo.AgooCommondReceiver" android:exported="true" android:process=":channel"> android:name="com.umeng.message.UmengMessageIntentReceiverService" android:exported="true" android:process=":channel"> android:name="com.umeng.message.NotificationProxyBroadcastReceiver" android:exported="false" /> android:name="com.umeng.message.UmengMessageCallbackHandlerService" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="false"> android:name="com.umeng.message.UmengDownloadResourceService" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="false" /> android:name="com.umeng.message.provider.MessageProvider" android:authorities="${applicationId}.umeng.message" android:exported="false"> 4.下载react-native集成环境的交接文件: 导入交接文件到项目中: 在MainApplication.java导入文件: import com.freemusice.push.DplusReactPackage; import com.freemusice.push.RNUMConfigure; import com.umeng.commonsdk.UMConfigure; import com.umeng.message.PushAgent; import com.umeng.message.IUmengRegisterCallback; 在onCreate方法中初始化umeng: 具体代码: RNUMConfigure.init(this, "你的appkey", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "你的Umeng Message Secret "); UMConfigure.setLogEnabled(true); 此处开启,可以查看正式包的deviceToken,方便后期进行单播模式的推送 具体代码: registerUPush(); private void registerUPush() { PushAgent mPushAgent = PushAgent.getInstance(this); mPushAgent.setResourcePackageName("你的包名"); //注册推送服务 mPushAgent.register(new IUmengRegisterCallback() { @Override public void onSuccess(String deviceToken) { Log.e("获取token成功: " ,deviceToken); } @Override public void onFailure(String s, String s1) { Log.e("获取token失败: " , s); } }); PushAgent.getInstance(this).onAppStart(); } import com.facebook.react.ReactActivity; import com.freemusice.push.PushModule;(注意换成你自己的包名) import com.umeng.message.PushAgent; 具体代码: PushModule.initPushSDK(this); PushAgent.getInstance(this).onAppStart(); 点击测试模式,创建测试设备:(输入token,绑定测试设备) 创建测试推送: ·第一步:填写带星号内容 ·第二部:选择独立用户,填写deviceToken ·第三部:点击完成,确认发送 注:测试模式可能会有1~2个小时的延迟,如果一开始不能立刻收不到推送消息,可以等过一两个小时在测试 如果你能正常收到推送的消息那么恭喜你,集成成功,可以进行真机测试了!!! 注: 推送效果: 在确认发送通知时,怎么判断这条推送消息发送的是测试消息还是正式消息呢? 就是下图中的production_mode字段来确定的:true为正式消息;false为测试消息 如果真机测试没问题,能收到通知,那么恭喜你,推送集成成功,之后发送推送,只需要把第二步的独立用户切换成全部用户就可以了。 本教程是本人经过了三天的时间,从开始集成push到最后成功,期间也遇到了各种问题,最终不负众望,终于完成。文档尽量全面,也可能会有遗漏的地方,如果你在集成过程中遇到什么问题,或者有不明白的地方欢迎留言探讨,欢迎收藏,谢谢! demo下载链接: 链接:https://pan.baidu.com/s/1P-RDbD8eGlSLM4X_ubjJsA
到这里react-native android端Umeng push集成完成,下边就可以测试了!
提取码:cusr