您的位置:首页 > Web前端 > React

react-native 集成极光推送jpush-react-native时的小问题

2017-09-28 11:41 656 查看

android的一个报错

... set canOverrideExistingModule=true

解决:

问题是在/android/app/src/java/.../MainApplication.java的getPackages()中重复引用了某个package,删除掉重复内容即可

新版中添加notifyJSDidLoad方法报错

  1. 如果不设平台,在ios里会报

    notifyJSDidLoad undefined
    错误

  2. 如果使用官方例子notifyJSDidLoad的代码,android会报cb方法undefined

// 在收到点击事件之前调用此接口
if(Platform.OS === 'android'){  //notifyJSDidLoad仅安卓有此方法

// JPushModule.notifyJSDidLoad((resultCode) => {
//    if (resultCode === 0) {}
//  })
//官网给的上面这种会报cb方法undefined错误

JPushModule.notifyJSDidLoad(resultCode=>console.log(resultCode))
//这样用不会报错,当然还有其他不会报错的写法。
}

后台带参传送时,前台拿到数据的结构不同平台不一样

JPushModule.addReceiveOpenNotificationListener(message=>{//用户点击通知事件

//android和ios接收到的参数结构不同,需要分别处理获取

if(Platform.OS==='android'){
const {param1,param2} = JSON.parse(message.extras)

...  //对应的路由跳转或者其他操作
}else{  //iOS
const {param1,param2} = message

...  //对应的路由跳转或者其他操作
}
}

android:const {param1,param2} = JSON.parse(message.extras)

iOS: const {param1,param2} = message

param1,param2改成你要接收的参数字段名

原理

因为iOS平台的推送是Apns推送,json格式不同,具体格式可以百度

apns推送 json格式
,如果懒可以点这里进行选购。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: