无法向Firebase云消息发送iOS CriticalAlert

无法向Firebase云消息发送iOS CriticalAlert,ios,firebase,google-cloud-messaging,apple-push-notifications,firebase-cloud-messaging,Ios,Firebase,Google Cloud Messaging,Apple Push Notifications,Firebase Cloud Messaging,我有一个内部应用程序,其中在我的应用程序中设置了criticalAlert选项。我已经确认,当我使用pushy应用程序发送以下内容时,我能够获得在iOS应用程序上工作的严重警报 问题是我们的内部服务器目前只向Firebase云消息发送通知,而我无法配置原始推送负载以在设备上播放严重警报 以下是苹果对APNS的推动方式的介绍: 以下是我使用在应用程序上运行的pushy应用程序发送的内容: { "aps" : { "content_available": true,

我有一个内部应用程序,其中在我的应用程序中设置了criticalAlert选项。我已经确认,当我使用pushy应用程序发送以下内容时,我能够获得在iOS应用程序上工作的严重警报

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

以下是苹果对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
                },

他们都不允许将语音词典传递给FCM


我也有,但它不能解决我的问题。因为我要求IOS知道这个推送通知是关键的,让OS处理它而不是我的应用程序。

在我回答你的具体问题之前,我建议你考虑如果可能的话使用替代的API。SDK有Node.js、Java、python、go和C版本。如果您的服务器代码是用这些语言中的任何一种编写的,那么这是一种处理FCM发送消息的简单方法。SDK处理重试和其他您必须在代码中实现的场景

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

https://fcm.googleapis.com/v1/projects/[your-project-id]/messages:send
您可以在中看到这方面的示例。从snippet选项卡中选择REST以查看示例


请注意,授权发送的方式与V1不同。您可以在中找到更多信息。如果您在auth部分遇到问题,我也写了一篇关于它的文章,因为它经常出现。

当您说“传递到FCM”时,您是使用REST API还是Admin SDK?如果使用REST,是否可以包含端点?如果使用Admin,是否可以包含服务器代码?我没有访问服务器代码的权限,但我当前正在使用Postman并将json有效负载发送到。如果我可以获得适当的json发送到FCM,则可以将服务器端更改为匹配。您是否使用传统http运行了它?我们还尝试了所有可能的组合-它不起作用。不过,APN是有效的。但是我们必须使用FCMWe可以批准Jen下面的回答,尽管我不能投赞成票,因为文档显然已被破坏,而且据说它正在使用遗留http api。它肯定与admin SDK一起工作,顺便说一句,这非常好。对于所有运行此库的平台,都很容易获得推送通知。@Jen Person为什么在这里记录它:此文档清楚地描述了http遗留API,但它仍然不起作用。真奇怪。请参阅通知有效负载支持->声音。这里说,一个人可以使用语音词典。我们尝试了所有可能的组合。。。
 {
    "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
            },
https://fcm.googleapis.com/v1/projects/[your-project-id]/messages:send