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

Not able to send an iOS CriticalAlert to Firebase Cloud Messaging

我有一个内部应用程序,在我的应用程序中设置了 criticalAlert 选项。我已经确认,当我通过强行应用程序发送以下内容时,我能够让关键警报在 iOS 应用程序上运行。

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

这里是 the example Apple 给出的推送应该如何看待 APNS:

这是我使用适用于该应用程序的 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
            },

None 他们允许将声音词典传递给 FCM。

我也有 the answer here 但它不能解决我的问题。因为我需要 iOS 知道这个推送通知很重要,并且让 OS 处理它而不是我的应用程序。

在回答您的具体问题之前,我建议您尽可能考虑使用 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 中看到这方面的示例。 Select REST 从代码片段选项卡查看示例。

请注意,您授权发送的方式与V1不同。您可以在 guide. If you have trouble with the auth part, I also wrote a blog post 中找到更多关于它的信息,因为它经常出现。