ios - Firebase Cloud Messaging 没有以正确的格式为 iOS 通知内容和服务扩展发送 aps 负载

标签 ios firebase apple-push-notifications firebase-cloud-messaging

我正在尝试使用 Firebase 实现通知。当应用程序处于后台或前台时,可以正确接收通知。因此,基 native 制正在发挥作用。

现在我已经向应用程序添加了内容扩展和服务扩展。当我使用本地通知时,内容扩展有效,但就可选字段而言,Firebase 消息有效负载似乎不正确。这是我的控制台图像的链接:

Firebase Console Image with mutable-content & category options

这是遇到的 Firebase 远程通知有效负载(其中一些长的 Google 数字经过匿名编辑:

{
    aps = 
    {
        alert = 
        {
        body = "Eureka! 11";
        title = "Patient is not doing well";
        };
    };
    category = provider-body-panel;
    gcm.message_id = 0:149073;
    gcm.n.e = 1;
    google.c.a.c_id = 2825604;
    google.c.a.e = 1;
    google.c.a.ts = 149073;
    google.c.a.udt = 0;
    mutable-content = 1;
}

“类别”和“可变内容”似乎不在正确的位置。它们应该在 aps 负载中。

如何让这些选项出现在负载中,以便我的应用程序能够正确解析它并将其与内容和服务扩展连接?

最佳答案

首先,我要提到 FCM 有两种类型的消息负载。 通知数据。查看documentation这里

当通过 Firebase 通知控制台发送通知时,它将被视为 通知 负载。但是,如果您添加自定义数据,它会将其作为自定义键值对添加到负载中。

例如,在您的帖子中,FCM 负载应如下所示:

{
    "notification": {
        "body" : "Eureka!",
        "title": "Patient is not doing well"
    },

    "data": {
        "category": "provider-body-panel",
        "mutable-content" : true,
        "click_action" : "provider-body-panel"
    }
}

怎么了?

  • click_action 应该在 notification 内。
  • mutable-content 应该是 mutable_content(注意下划线)并且应该与 notification同一级别>.
  • (这个我可能理解错了,但是)FCM没有category参数,click_action已经对应了。

有关参数,请参阅文档 here .

目前无法在使用 Firebase 通知控制台时设置 click_actionmutable_content 的值。您必须自己构建有效负载,如下所示:

{
    "to": "<REGISTRATION_TOKEN_HERE>",
    "mutable_content" : true,
    "notification": {
        "body" : "Eureka!",
        "title": "Patient is not doing well",
        "click_action" : "provider-body-panel"
    }
}

然后从您自己的应用服务器发送它。您也可以通过 using Postman 来做到这一点或 cURL

关于ios - Firebase Cloud Messaging 没有以正确的格式为 iOS 通知内容和服务扩展发送 aps 负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43099614/

相关文章:

iOS - 打开时应用程序角标(Badge)消失

php - APNS 多个 registerId

java - 无法部署到 Google App Engine : java. lang.IllegalArgumentException:类文件是 Java 8 但最大支持是 Java 7

swift - 无法将类型 '(User?, Error?) -> ()' 的值转换为预期的参数类型 'AuthDataResultCallback?'

java - Android Firebase 数据库不断更新值(value)

通过 FCM 的 iOS 严重警报

ios - MagicalRecord:多个数据库

ios - BluetoothManager 不适用于 iOS 7

iOS5:模式 UIViewController 播放 Youtube 视频时 UIWebView 出现异常

ios - WKWebView 预估进度