昨天在uniapp的项目里想要接入unipush2.0去做App的推送,结果接完后发现,离线推送始终没办法监听到click事件,点击离线推送后,只会打开App,不会执行click的回调,但是在线推送又可以成功监听到,尝试用uniapp的uni.onPushMessage和h5+的plus.push.addEventListener 两种方法都没办法监听到。
研究了一个下午,最后终于找到了原因所在。
因为业务需要,我在onLaunch中有几个异步的请求,我使用了await等待请求完成后再继续执行后续代码。而我的uni.onPushMessage和plus.push.addEventListener 都写在了这几个异步请求的后面,导致App在通过点击离线推送启动后,等待这几个异步请求执行完毕后,大概耗时了几秒钟甚至十几秒之后,才去执行了uni.onPushMessage和plus.push.addEventListener,这个时候已经监听不到click的回调了...
所以解决方法非常的简单,把uni.onPushMessage和plus.push.addEventListener 写在onLaunch的最前面就可以了(起码不要写在Promise的后面)