无法将iOS CriticalAlert发送到Firebase云消息传递

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将iOS CriticalAlert发送到Firebase云消息传递相关的知识,希望对你有一定的参考价值。

我有一个内部应用程序,我在我的应用程序中设置了criticalAlert选项。我已经确认,当我使用pushy应用程序发送以下内容时,我可以获得关键警报以在ios应用程序上运行。

问题是我们的内部服务器目前只将通知发送到Firebase云消息传递,而我无法配置原始推送有效负载以在设备上播放严重警报。

这是苹果给出了关于推送应该如何看待APNS的the example

以下是我使用适用于该应用程序的pushy应用程序发送的内容:

{
    "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。

我也有the answer here但它并没有解决我的问题。因为我要求iOS知道这个推送通知是关键的并且操作系统处理它而不是我的应用程序。

答案

在我回答您的具体问题之前,我建议您尽可能考虑使用Admin SDK而不是REST API。 SDK可在Node.js,Java,python,go和C#中使用。如果您的服务器代码是用这些语言编写的,那么这是一种更简单的方法来处理使用FCM发送消息。 SDK处理您必须在代码中实现的重试和其他方案。

至于你的问题,在guides中注意到特定于平台的字段仅适用于FCM v1端点。要使用FCM,您的端点将如下所示:

https://fcm.googleapis.com/v1/projects/[your-project-id]/messages:send

您可以在guides中看到这样的示例。从代码段选项卡中选择REST以查看示例。

请注意,您授权发送的方式与V1不同。你可以在guide找到更多。如果你在使用auth部件时遇到问题,我还会写一篇关于它的blog post,因为它定期出现。

以上是关于无法将iOS CriticalAlert发送到Firebase云消息传递的主要内容,如果未能解决你的问题,请参考以下文章

iOS 如何定位获取周围地点信息

iOS 14出现无法连接Wi-Fi网络,三步教你解决问题

XCUITest - 如何在应用程序运行时禁用 Wi Fi?

发送到实例的 iOS 无法识别的选择器 - 将 NSDictionary 添加到 NSMutableArray

iOS 13.2 消息:nehelper 为 Wi-Fi 信息请求发送了无效的结果代码 [1]

将 Google Map SDK 添加到 iOS6 时将错误无法识别的选择器发送到类