addReceiveOpenNotificationListener会走两遍


(Silence More) #1

每次登陆,addReceiveOpenNotificationListener函数都会多走一遍,导致点击通知消息多次跳转页面


#2

详细表述你的操作步骤,每次登陆 这是什么操作?JPush 涉及到登陆?

你使用的 SDK 版本是多少?用的是插件?插件版本是多少?

Android 还是 iOS 出现该问题,将复现到的步骤和完整的客户端日志提供一下


(Silence More) #3

安卓手机存在这个问题,SDK版本26,用的jpush-react-native插件,版本 “jpush-react-native”: “^2.1.12”,用户登陆后才会收到推送,推送信息只有一条,但会跳多次进详情页面,APP退出后重新启动就没有这个问题,用户退出登陆后重新登陆,点击推送信息addReceiveOpenNotificationListener方法执行多次。


(Josh Lipan) #4

你的登录和退出登录是通过stopPush和resumePush绑定推送行为吗


(Silence More) #5

不是,如果退出登陆用了stopPush,再登陆也收不到推送了


(Josh Lipan) #6

那你的登录和退出登录是怎么绑定推送行为的
还有你注册事件后不需要的时候有调用removeReceiveOpenNotificationListener吗


(Silence More) #7

退出登录的时候没有做处理,登陆的时候执行了notifyJSDidLoad,addReceiveCustomMsgListener,addReceiveNotificationListener,addReceiveOpenNotificationListener这些函数


(Silence More) #8

我第一次安装APP,登陆后,addReceiveOpenNotificationListener就会执行两遍


(Josh Lipan) #9

没有remove掉监听,每次登录都增加一次监听自然会收到多次事件,建议退出登录时调用对应remove方法去除监听


(Silence More) #10

已执行清楚方法
JPushModule.removeGetRegistrationIdListener(getRegistrationIdEvent);
JPushModule.clearAllNotifications();
JPushModule.removeReceiveOpenNotificationListener(openNotificationEvent);
JPushModule.removeReceiveCustomMsgListener(receiveCustomMsgEvent);
JPushModule.removeReceiveNotificationListener(receiveNotificationEvent);
未生效。


(Silence More) #11

打印了一下,清除方法中没有能执行listeners[cb].remove()方法,都是直接return了


(Josh Lipan) #12

你add和remove的事件是同一个对象吗


(Silence More) #14

是的,名字都是openNotification


(Josh Lipan) #15

能把你写的相关代码贴上来看下吗,如果不方便可以单独发我qq:542938192


(Silence More) #16

使用代码发至QQ邮箱了


(Josh Lipan) #17

你这添加和移除的不是同一个function,传入一个字符串没有意义,建议写成:

//添加监听
this.receiveNotificationListener = map => {
      console.log('alertContent: ' + map.alertContent)
      console.log('extras: ' + map.extras)
    }

JPushModule.addReceiveNotificationListener(this.receiveNotificationListener)
//移除监听
JPushModule.removeReceiveNotificationListener(this.receiveNotificationListener)

(Silence More) #18

物理键退出APP后点击推送消息可以进入详情页面吗,还是只能唤醒APP,进入首页。


(Josh Lipan) #19

插件会帮你拉起应用,具体跳到哪个页面要你自己控制


(Silence More) #20

安卓物理键退出APP后addReceiveNotificationListener函数不被触发,只有APP再前台运行时才触发


(Josh Lipan) #21

退出APP后,点击通知会缓存OpenNotification事件,事件注册完成后调用notifyJSDidLoad会触发缓存事件