我们有一个后端服务器,可以向 Android 和 iOS 设备发送带有数据负载的 FCM 推送通知。我正在开发 Android 应用程序。当应用程序在前台时,会调用 onMessageReceived 并且可以从 RemoteMessage 检索数据。当应用程序在后台时,会发布系统通知。用户单击此按钮,可从 Intent extras 中检索数据。一切都很好。
我试图弄清楚如何处理在应用程序处于后台或死机时传入多个通知的情况。所需的行为是“吸收”任何活动通知并能够检索其数据有效负载。我可以使用 NotificationManager (API >= 23) 或实现 NotificationListenerService 来获取和清除(取消)活动通知。我一直无法找到一种方法来获取与它们关联的数据有效负载。StatusBarNotification.getNotification().extras 看起来很有希望,但不包含数据。我什至使用 Android Studio 调试器来检查从 getActiveNotifications() 返回的通知,但没有发现任何内容。
我认为根据我的研究,“正确”的答案是为 iOS 推送发送“通知”部分,但为 Android 推送(即仅数据)省略它,然后当我的应用程序在设备上本地发布我自己的通知不在前台。然后 onMessageReceived 应该总是被调用,我可以保存数据有效负载并完全控制。但是,我不确定此时我们是否可以更改后端服务器以支持拆分的 Android/iOS 路径。从我读过的内容来看,如果应用程序被终止,我担心某些设备上不会调用该服务。
那么,有没有人知道检索其他活动通知的数据负载的方法?或者有其他方法可以在不需要后端服务器更改的情况下解决这个问题?
谢谢!
notifications android payload firebase firebase-cloud-messaging