环境:
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的同事沟通之后再更新。
网友评论