Firebase云消息传递不会以正确的格式发送iOS通知内容和服务扩展的aps负载
我正在尝试使用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的消息载荷。 notification
和data
。 请参阅这里的文档
通过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_action
和mutable_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" } }