ReactNative jPush集成的坑

ReactNative jPush集成的坑

最近项目需要适配小米、华为、魅族三方的推送,在集成的时候遇到了很多坑,目前将曾经遇到的坑整理一下,今后方便其它同学们集成。在集成之前应该仔细阅读jPush官方文档,特别是API的相关变更,建议抽一个jPushHelper中间层以适应jPush接口的变化。

  • 确保推送的配置(AppID,AppKey,AppSecret)正确
    登录三个平台相应的开发者网站获取这三个配置的信息。一般就放在管理控制台中,然后选择推送服务,里面会有相应的推送信息,这三个应用配置很重要,如果配置出错,极光后台的日志会打印显示REGISTER FAILED
小米推送相关信息.jpg
  • 确保jPush插件所带的jPush库与build.gradle中引入的推送库版本号一致。不一致有可能会导致收不到推送。
  • 华为集成的坑
    在集成华为推送后,华为上就会优先走华为的推送渠道。根据文档我们需要自己处理推送的消息体,传回给JS层。在这个时候遇到了很多问题。
    1.如果获取消息体
    只需在onCreate中取出保存在intent中的消息体,并处理成自己想要的格式。
     if( getIntent().getData()) {
         String pushInfo = getIntent().getData().toString();
     }

2.消息体如果回传给JS端
获取reactContext,并调用emit方法监听回调给JS端,

    public static void sendEvent(ReactContext reactContext, String eventName, WritableMap params) {
        // eventName:监听事件名称 params:回调参数(推荐使用WritableMap)
        ReactContext reactContext = getReactInstanceManager().getCurrentReactContext();
        reactContext
                .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
                .emit(eventName, params);
    }
    

3.消息体如果回传时报错
当emit时,发现应用一直闪退,打印日志开出,此时的reactContext为null,需要等待reactContext初始完毕后,方可发送监听回调。所以需要暴露一个ReactMethod给JS端,当这个方法执行时,发送广播给MainActivity再执行推送点击的回调。

       /**
         * 当RN端加载完毕发送广播通知原声端
         *
         */
        @ReactMethod
        public void loadingFinished() {
            Log.e(TAG,"广播发送成功");
            Intent intent = new Intent();
            intent.setAction("com.loadingFinished");      //设置Action
            intent.putExtra("msg", "接收动态注册广播成功!");      //添加附加信息
            context.sendBroadcast(intent);
        }

MainActivity部分代码:

        private BroadcastReceiver myReceiver = new BroadcastReceiver() {
    
            @Override
            public void onReceive(Context context, Intent intent) {
                if (intent.getAction().equals("com.loadingFinished") && pushInfoString != null) {    //动作检测
                    WritableMap map = Arguments.createMap();
                    map.putString("extras", getPushExtraString(pushInfoString));
                    sendPushInfoToJs(map);
                }
    
            }
        };
  • 其它的坑
    1.部分华为手机需要开启自启动权限才能在后台推送成功(华为系统做了限制,如果不是受信任的信用,不会再后台开启相应应用)有些系统较老的即使开启也不能在后台收到推送,好坑。。。
    2.魅族推送有时会有一定延迟,大概相隔3-5min才会收到推送(虽说事件不长,但要调试的时候要等一会就挺烦心的= =)
    3.调用jPushModulesetAlias之前需确保推送当前是开启的,假如推送关闭会报errorCode:6012(在JPush服务stop状态下设置了tag或alias或手机号码 )
    4.在3的基础下,假如第一次想清除之前App的alias,则需要确保新的alias注册成功后才能调用stop push
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容