Android极光推送通知问题

环境:

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的同事沟通之后再更新。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 推送技术产生场景: --服务器端主动性: 客户端与服务器交互都是客户端主动的, 服务器一般不能主动与客户端进行数据...
    原军锋阅读 34,804评论 4 60
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,242评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,917评论 2 59
  • 版本记录 前言   现在很多APP都有推送功能,其中极光推送就是很多APP的首选。我们最近的几个APP也是用的极光...
    刀客传奇阅读 8,511评论 0 8
  • 原文: 治大国,若烹小鲜,以道莅天下,其鬼不神。非其鬼不神,其神不伤人。非其神不伤人,圣人亦不伤人。夫两不相伤,故...
    秀妮_5519阅读 805评论 5 3