从活动通知中检索FCM数据有效负载

时间:2017-06-27 20:41:24

标签: android firebase notifications firebase-cloud-messaging payload

我们有一个后端服务器,可以向Android和iOS设备发送带有数据负载的FCM推送通知。我正在开发Android应用。当应用程序位于前台时,将调用onMessageReceived,并且可以从RemoteMessage中检索数据。当应用程序在后台时,会发布系统通知。用户单击此按钮,可从Intent附加功能中检索数据。一切都很好。

我正在试图弄清楚如何在应用程序背景或死亡时处理多个通知的情况。期望的行为是"吸入"任何活动通知,并能够检索其数据有效负载。我可以使用NotificationManager(API> = 23)获取并清除(取消)活动通知,或实现NotificationListenerService。我无法找到一种方法来获取与它们相关的数据有效负载。 StatusBarNotification.getNotification()。extras似乎很有希望,但不包含数据。我甚至使用Android Studio调试器来检查从getActiveNotifications()返回的通知,但没有找到任何内容。

我认为"正确"根据我的研究,回答是发送"通知"用于iOS的部分推送,但省略它用于Android推送(即仅数据),然后当我的应用不在前台时在设备上本地发布我自己的通知。然后应始终调用onMessageReceived,我可以保存数据有效负载并完全控制。但是,我不确定我们是否可以在此时更改后端服务器以支持拆分的Android / iOS路径。从我读过,我担心如果应用程序被杀,某些设备上没有调用该服务。

那么,有没有人知道检索其他活动通知的数据有效负载的方法?或者有其他方法可以在不需要后端服务器更改的情况下进行此操作?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我认为,根据我的研究,“正确”的答案是发送   iOS的“通知”部分推送,但为Android推送省略了它   (即仅限数据),然后在本地发布我自己的通知   我的应用程序不在前台时的设备。然后onMessageReceived   应该总是被调用,我可以节省数据有效载荷和   完全控制。

这是正确的方法。 (目前唯一可用的)

  

但是,我不确定我们是否可以更改后端服务器来支持   此时拆分Android / iOS路径。

我们正在努力改进API以更好地支持您的用例 不幸的是,我不能为这项工作分享ETA。

  

从我看过,我担心服务没有被调用   在某些设备上,如果该应用程序被杀死。

这些设备既不会收到notification-messages :(。 这些设备甚至不接收AlarmManager事件,也不接收系统广播 如果您遇到此类设备,请与制造商联系,让他们知道他们的行为不合标准,这会破坏您的应用。