我有一个发送推送通知的服务器。对于Android,我覆盖onMessageReceived
来处理消息。对于 iOS,我使用NotificationExtension
. I need更改传入的推送通知(我不知道标题和服务器端的所有内容,客户端知道这一点)。奇怪的是我找不到一种方法让它适用于两个平台。事情是这样的:
- 对于 Android,推送通知的有效负载不得包含
notification
堵塞。如果有一个notification
块存在,标题和正文notification
当应用程序处于后台且onMessageReceived
从未被调用过。这是不希望的。删除notification
阻止并保留data
适用于 Android 的后台和前台模式。
- 当我省略
notification
对于 iOS 块,我从 Firebase 收到错误:InvalidParameters: Invalid notification payload
.
Examples
有效负载无notification
(在后台 + 前台模式下完全适用于 Android,无法发送(因此无法检索)iOS):
{
"to" : "-",
"data" : {
"body" : "Notification Body",
"title": "Notification Title",
},
"mutable_content": true
}
有效负载与notification
,这完全适用于 iOS,但不会调用onMessageReceived
当应用程序处于后台时 Android 上的方法:
{
"to" : "-",
"data" : {
"body" : "Notification Body",
"title": "Notification Title",
},
"mutable_content": true,
"notification": { "title": "test" }
}
如何让两个平台同时工作于前台+后台数据推送消息?根据https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages#Notification https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages#Notification,它指出应该可以仅向 iOS 发送数据通知,我尝试设置标头,但仍然收到相同的错误:“当发送包含仅适用于 iOS 设备的数据字段,ApnsConfig 中只允许普通优先级(“apns-priority”:“5”)。”
我不想使用 content-available 标志,因为它的行为不同,并且您每小时只能发送 2 个通知。