我们有两种 Firebase 通知,一种带有
notification
字段,一种没有(系统使用该字段显示横幅)。
总是会收到with,而without则在某行尝试后收到,然后停止接收。
这些是有效负载:
总是收到的:
{
"content_available": true,
"data": {
"pushCategory": "ALEXA",
"body": "body",
"message": "message",
"title": "status/update",
"updateStatus": {
"operationId": "7fc0e1ff-cc0d-4045-8b30-69710bf80c24",
"status": 0,
"action": "makecoffee",
"description": "",
"stock": {
"remaining": "91",
"threshold": "10",
"depletion": false
}
}
},
"notification": {
"title": "title",
"body": "body msg"
},
"apns": {
"headers": {
"apns-priority": "10"
}
},
"to": "----"
}
未随机收到的:
{
"content_available": true,
"data": {
"pushCategory": "ALEXA",
"body": "body",
"message": "message",
"title": "status/update",
"updateStatus": {
"operationId": "7fc0e1ff-cc0d-4045-8b30-69710bf80c24",
"status": 0,
"action": "makecoffee",
"description": "",
"stock": {
"remaining": "91",
"threshold": "10",
"depletion": false
}
}
},
"apns": {
"headers": {
"apns-priority": "10"
}
},
"to": "----"
}
始终会收到直接使用 APNS 服务器且没有
alert
字段的等效通知。 (alert
字段是告诉系统显示横幅的字段)
我联系了 Firebase 支持人员,但问题仍然存在,您知道可能是什么问题吗?
我从未使用过 Firebase。 我不确定您的有效负载中的
apns-priority
是否有效果。我只是不知道:
"apns": {
"headers": {
"apns-priority": "10"
}
},
我认为你必须摆脱它并只使用
priority
字段本身。让 Firebase 映射字段本身...
从 Firebase 文档,查找
priority
参数的描述以及 data
与 notification
的不同行为:
设置消息的优先级。有效值为“正常”并且 “高的。”在 iOS 上,这些对应于 APN 优先级 5 和 10。
默认情况下,通知消息以高优先级发送,并且 数据消息以正常优先级发送。正常优先级优化 客户端应用程序的电池消耗,应该使用,除非 需要立即交货。 对于具有正常优先级的消息, 应用程序可能会以未指定的延迟接收消息。
当发送高优先级消息时,立即发送,并且 该应用程序可以显示通知。
带有
data
的负载最终的 firebase 优先级为“正常”,转换为 apns-priority
5
对于
notification
,firebase 优先级“高”转换为 apns-priority
为 10
有关 apns-priority 的更多信息,请参阅 apns-docs
通知的优先级。如果省略此标头,APNs 将设置 通知优先级为10。
指定10立即发送通知。
指定5根据功率考虑发送通知 用户的设备。
如果消息不包含通知字段,即使优先级设置为 10,iOS 也可能会忽略它。这是因为优先级:10 适用于立即向用户显示的通知。对于纯数据消息,iOS 将其视为较低优先级,尤其是当应用程序位于后台时。为了确保交付,请添加通知字段以使其成为面向用户的通知。