FCM Cloud Messaging 与 Notifications 和 Message 的区别

Posted

技术标签:

【中文标题】FCM Cloud Messaging 与 Notifications 和 Message 的区别【英文标题】:FCM Cloud Messaging difference from Notifications and Message 【发布时间】:2021-04-26 09:57:07 【问题描述】:

我实现了我的后端服务(使用 java 和 FCM)向移动应用发送推送通知。

我使用 Java Firebase Admin-SDK(https://firebase.google.com/docs/reference/admin/java/reference/com/google/firebase/messaging/package-summary 和 https://firebase.google.com/docs/cloud-messaging/send-message#java)实现了我的服务,我能够在 iosandroid 移动应用上发送(和接收)推送通知。

现在我收到了来自移动开发者的请求,他们需要自定义(客户端)接收到的推送通知(以及当应用程序处于后台模式时)。

这里可能报告了同样的问题:What is the difference between Firebase push-notifications and FCM messages?

阅读文档 (https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages) 我了解到有必要使用数据消息而不是通知消息。

我不清楚需要进行哪些更改才能支持这种交付类型。 我是更改 FCM 消息的 Android-config 还是删除一些不必要的数据(只需将所有信息设置到自定义数据中,没有其他信息,例如 Android 配置等)

可以举个小例子吗?

【问题讨论】:

【参考方案1】:

如果您的 json 将有 notification 键,开发人员将无法在后台处理通知。只有当应用程序处于前台时,他们才会收到此通知。如果开发人员应该收到“静默推送”或者他们需要控制所有通知,您应该删除notification 键,并仅使用data 键。

【讨论】:

【参考方案2】:

这可以通过将键“通知”更改为“数据”来实现,如下所示:

   
     "notification":   //replace this line by "data"
     "title": "Hey Gajanan", 
     "body": "Thanks for visiting omnidecoder.com"
     ,
     "to" : "YOUR-GENERATED-TOKEN"
    

【讨论】:

以上是关于FCM Cloud Messaging 与 Notifications 和 Message 的区别的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firebase Cloud Functions 测试中模拟 FCM admin.messaging().sendToDevice() 的实现

如何检测真正的 iOS/APNS 推送令牌何时向 Firebase Cloud Messaging (FCM) 注册?

Flutter Firebase Cloud Messaging - 应用程序在后台时的通知

通过NodeJS向Firebase Cloud Messaging发送消息

Flutter Firebase Cloud Messaging 如何自动关闭/取消通知?

SERVICE_NOT_AVAILABLE 同时使用 Xamarin for Android 注册 Google Cloud Messaging