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

本文解决了Android开发中关于重复引用包的问题,并提供了解决方案。同时介绍了如何正确使用notifyJSDidLoad方法来避免报错。此外还讨论了不同平台上处理推送消息参数的差异。

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格式,如果懒可以点这里进行选购。

转载于:https://www.cnblogs.com/macq/p/7605975.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值