zoukankan      html  css  js  c++  java
  • react-native 集成极光推送jpush-react-native时的小问题

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

  • 相关阅读:
    地平线4快速选车-适用入门玩家
    网站大全【杂】
    排序算法-C语言
    一个仿tp5分页组件的实现
    thinkphp 二级域名绑定模块,导致设置的路由被多域名共用的问题解决方案
    php核心技术与最佳实践 --- 错误与异常
    php核心技术与最佳实践 --- 错误与异常
    php核心技术与最佳实践--- oop
    《CSS揭秘》》
    css 单位之px , em , rem
  • 原文地址:https://www.cnblogs.com/macq/p/7605975.html
Copyright © 2011-2022 走看看