问题
App集成了极光推送,为了保证推送到达率同时使用了小米,华为推送。
需求就是点击收到的推送消息,启动对应的界面。emmmm…
思路
一般来说的处理思路就是:
- 应用正在运行。处理推送点击事件,直接根据消息内容跳转到页面。
- 应用未运行。将消息内容存起来启动应用,在首页如果存储消息内容不为空则启动对应页面。
测试
按照上面的思路写好了,开始测试。
- 小米手机。应用启动立马就跳转了,应用未启动启动应用然后跳转。good!没问题!!!
- 华为荣耀手机。应用启动点击通知,跳转到对应界面,good!木有问题!!!哎,等等,高兴不到5秒钟,怎么对应的页面自己关闭了?崩溃了么?咦,logcat没有报错日志?偶然么?反复再试…还是如此!!!What???
发现
不断的尝试我发现,每次点击推送消息,应用都重新启动了应用!!!
而且无论在哪个页面每次都是页面自动关闭后都回到了主页。
这是为什么呢?反复百度查找后看到了这篇文章Android 推送点击跳转与华为推送神坑,我惊呆了。我的情况跟他一模一样!!!
我也如此打印生命周期,果然如此!!!
罪魁祸首
根据文档,华为的推送方式,普通通知并不能让客户端自己处理点击事件,会自动重启动应用!!!?
解决
- 可以参照Android 推送点击跳转与华为推送神坑种的处理方式。
- 判断当前系统,如果是华为emui系统,点击推送的时候就将推送消息的内容存起来,然后在启动后如果存储的消息不为空,就根据存储的内容打开对应的界面,并清空存储的消息。
参考