Firebase云消息传递不会以正确的格式发送iOS通知内容和服务扩展的aps负载

我正在尝试使用Firebase实现通知。 当应用程序处于后台或前台时,会正确接收通知。 所以,基本的力学工作。

现在我已经添加了内容扩展和服务扩展到应用程序。 内容扩展在我使用本地通知时起作用,但只要考虑可选字段,Firebase消息负载似乎不正确。 这里是我的控制台的图像的链接:

具有可变内容和类别选项的Firebase控制台图片

这里是Firebase远程通知有效载荷(与一些长长的谷歌号码编辑匿名:

{ aps = { alert = { body = "Eureka! 11"; title = "Patient is not doing well"; }; }; category = provider-body-panel; gcm.message_id = 0:149073; gcm.ne = 1; google.cac_id = 2825604; google.cae = 1; google.cats = 149073; google.caudt = 0; mutable-content = 1; } 

看来,“类别”和“可变内容”不在正确的位置。 他们应该在阿普斯有效载荷。

我怎样才能得到这些选项在有效载荷,以便我的应用程序可以正确parsing它,并连接到内容和服务扩展?

首先,我要提到FCM有两种types的消息载荷。 notificationdata 。 请参阅这里的文档

通过Firebase通知控制台发送通知时,它将被视为notification有效内容。 但是,如果添加自定义数据 ,则会将其作为自定义键值对添加到有效内容中。

例如,在你的文章中,FCM有效载荷应该是这样的:

 { "notification": { "body" : "Eureka!", "title": "Patient is not doing well" }, "data": { "category": "provider-body-panel", "mutable-content" : true, "click_action" : "provider-body-panel" } } 

怎么了?

  • click_action应该在notification
  • mutable-content应该是mutable_content (注意下划线),并且应该与notification位于同一层
  • 这个我可能误解了,但是 )FCM没有category参数, click_action已经对应了它。

请参阅这里的参数文档。

目前,无法在使用Firebase通知控制台时设置click_actionmutable_content的值。 你将不得不自己构build有效载荷,如下所示:

 { "to": "<REGISTRATION_TOKEN_HERE>", "mutable-content" : true, "notification": { "body" : "Eureka!", "title": "Patient is not doing well", "click_action" : "provider-body-panel" } } 

然后从你自己的应用服务器发送它。 您也可以使用邮差或cURL 来做到这一点

“可变内容应该是你的post中提到的”mutable_content“(firebase服务器的关键字,作为IOS的可变内容发送),我想你在编辑中忽略了。

以下是发送给FCM服务器的json中数据部分的更正格式示例。 所以更新将是:

 { "to" : "YOUR firebase messaging registration id here", "mutable_content":true, "notification": { "title": "Its about time", "body": "To go online Amigo", "click_action": "NotificationCategoryIdentifier ForYourNotificationActions" }, "data":{ "customKey":"custom data you want to appear in the message payload" "media-attachment":"mycustom image url", "catalogID":"mycustom catalog for my custom app" } }