Android极光推送通知问题(如果你的app也想拥有qq,微信进程杀死后仍然可以收到推送,请看下面)

 

  • 「为什么微信或者 QQ 等应用看似可以保证不被杀死或者杀死后可以收到消息」

  • 如果将他们完全彻底的杀死,也是收不到的,这是肯定的

  • 只是:他们很难被杀死,即便杀死后也会以较快的速度重启:我们(用户)会下意识的在手机里开启对他们的保护;他们是不少手机系统的自带软件。

  • 我们已接入「小米推送」、「华为推送」「魅族推送」「Google FCM」等市场上已有的 4 种系统推送,在 App 杀死时,你通过极光推送发的消息,在这 4 种手机上,会自动走系统推送下发消息,有需要的话可联系商务开通。

  • 联系商务,QQ 公众号:800024881,电话:400-612-5955,邮箱:[email protected]
    开通服务后方可获取到相关资料,相关技术支持请直接对接 VIP 支持,社区对此无法提供帮助

  • 当然,你也可以自己单独的去集成每个系统推送的官方 SDK ,只是这样你需要分别手动进行推送。

 

环境:

AndroidStudio3.2 + JPush SDK 3.0.8

需求:

项目要求根据不同的逻辑推送不同的内容到手机,手机状态栏显示通知(app未运行时)或弹窗提示(app正在运行),根据不同的内容点击通知或弹窗选项后跳转到相应的页面。

现状:

根据官方文档集成后后台推送消息到极光服务器,后台推送代码如下:

极光推送后台代码

根据官方文档的说明和调试发现,Android端集成好JPush SDK后,在不配置自己定义的Receiver,Android设备可以接收到服务器推送过来的Notificatio(见上面的第一张图:极光推送后台代码中的setNotification方法),并在Android设备状态栏生成一条Notification,该Notification的样式可以自定义(通过JPushInterface.setPushNotificationBuilder方法来设置),但是点击该Notification只能打开应用的主页面。

极光说明文档

配置好自己定义的MyReceiver:

极光推送Android接收器代码

Receiver配置

此时发送推送消息时Android端会收到两条推送:

日志

由极光默认生成的Notification还是无法更改,不能实现点击后根据需求跳转,于是咨询了极光支持团队,得到如下答复:

极光答复

解决:

根据极光的答复,初步的解决方案应该是要修改后台代码,生成PushPayload时只生成Message,不要Notification,或者推送的Notification中Message或Alert为空,这样极光SDK就不会在状态栏生成Notification,然后Android设备在Action为 cn.jpush.android.intent.MESSAGE_RECEIVED 的Receive中根据业务逻辑生成相应的Notification并设置相应的PendingIntent。

问题:

以上是我想到的初步解决方案,还需要和后台、iOS的同事沟通协调,上述记录一是为整理思路,二是作个记录,如果其他人遇到相似问题了可以做个参考,或者自己以后再遇到此问题时可以快速解决,后面和后台、iOS的同事沟通之后再更新。



作者:HelloJP
链接:https://www.jianshu.com/p/2531a9d63b7b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自blog.csdn.net/u014644594/article/details/84984902