我有一个内部应用程序,在我的应用程序中设置了 criticalAlert 选项。 我已经确认,当我使用咄咄逼人的应用程序发送以下内容时,我能够获得严重警报以在iOS应用程序上运行。
问题是我们的内部服务器目前仅将通知发送到 Firebase 云消息传递,我无法配置原始推送有效负载以在设备上播放严重警报。
以下是Apple给出的关于APNS推送应该如何的示例:
以下是我使用适用于该应用程序的咄咄逼人的应用程序发送的内容:
{
"aps" : {
"content_available": true,
"priority": "high",
"alert" : "Your message Here",
"badge" : 1,
"sound": {
"critical": 1,
"name": "alert.wav",
"volume": 1.0
},
"data": {
"volume": 7,
"time_to_live": 900,
"id": 3618,
"type": "engagement",
"overrideMessage": "Testing oncall for iOS",
"case": "Test Case",
"repeatNumber": 3,
"customer": "Google"
}
}
}
以下是我们发送到 FCM 的当前有效负载,它适用于自定义声音,但我们确实希望关键警报正常工作,因为推送是为了待命参与:
{
"to": "firebaseToken",
"content_available": true,
"priority": "high",
"isCritical": "true",
"notification": {
"title": "Title in notification",
"body": "Body in notification",
"sound": "alert.wav",
"badge": "1",
"subtitle": "subtitle in notification"
},
"data": {
"volume": 7,
"time_to_live": 900,
"id": 3618,
"type": "engagement",
"overrideMessage": "Testing oncall for iOS",
"case": "Test Case",
"repeatNumber": 3,
"customer": "Google"
}
}
我已经尝试了大量关于发送到FCM的内容的组合,但没有运气:
{
"to": "firebaseToken",
"apns": {
"headers": {
"apns-priority": "10"
},
"payload": {
"aps" : {
"sound": {
"critical": 1,
"name": "alert.wav",
"volume": 0.5
},
和
{
"aps" : {
"to": "firebaseToken",
"content_available": true,
"priority": "high",
"alert" : "Your message Here",
"badge" : 1,
"sound": {
"critical": 1,
"name": "alert.wav",
"volume": 0.5
},
和
{
"to": "firebaseToken",
"aps" : {
"sound" : {
"critical": 1,
"name": "alert.wav",
"volume": 1.0
}
},
"notification": {
"badge": "1",
和
{
"to": "firebaseToken",
"isCritical": "true",
"content_available": true,
"notification": {
"badge": "1",
"sound" : {
"critical": 1,
"name": "alert.wav",
"volume": 1.0
},
他们都不允许将声音词典传递给FCM。
我在这里也有答案,但它不能解决我的问题。 因为我要求iOS知道此推送通知至关重要,并让操作系统处理它而不是我的应用程序。
在回答您的具体问题之前,我建议您考虑使用管理员 SDK 而不是 REST API(如果可能的话)。该SDK在Node.js,Java,python,go和C#中可用。如果您的服务器代码是用这些语言中的任何一种编写的,那么处理使用 FCM 发送消息的方法要简单得多。SDK 处理重试和其他方案,否则必须在代码中实现。
至于您的问题,指南中指出,特定于平台的字段仅适用于 FCM v1 终端节点。要使用 FCM,您的终端节点将如下所示:
https://fcm.googleapis.com/v1/projects/[your-project-id]/messages:send
您可以在指南中看到这方面的示例。从代码段选项卡中选择 REST 以查看示例。
请注意,授权发送的方式与 V1 不同。您可以在指南中找到更多信息。如果您在身份验证部分遇到问题,我还写了一篇关于它的博客文章,因为它经常出现。