APN与Firebase分开可以很好地运行,但是无法在FCM中正常工作

时间:2018-07-30 05:40:51

标签: swift firebase push-notification apple-push-notifications firebase-cloud-messaging

很抱歉,如果这是一个愚蠢的问题,我是第一次使用APN设置Firebase。我正在使用iOS应用程序在Swift中工作,并且在没有Firebase的情况下我可以单独运行apns消息-因此在后台以及运行应用程序时会在设备上收到远程推送通知。我可以使用此工具https://github.com/noodlewerk/NWPusher通过发送以下json blob作为示例,以成功在沙盒和生产apns证书上发送通知:

{"aps":{"alert":"Testing","badge":1,"sound":"default"}}

但是,现在我正在尝试合并Firebase,而在iOS设备上没有得到相同的行为。

我具有Firebase消息传递设置,该应用程序使用"shouldEstablishDirectChannel = true"打印远程消息,但从未收到APN(将此设置为false则设备将不打印任何内容)。设备上未收到推送通知。我不认为针对Firebase消息的APNs映射正确,因为我无法像在NPNusher上严格按照APNs Sandbox和Production证书那样使设备显示推送通知。 Firebase应用程序控制台具有该应用程序的.p12 apns证书(对于不涉及firebase的apns来说,它工作正常)

这是我尝试发送给https://fcm.googleapis.com/fcm/send

的示例请求
{
    "to" : "eqkeyhereinifnbe",
    "collapse_key" : "type_a",
    "data" : {
        "body" : "Notification",
        "title": "testing",
        "key_1" : "Data for key one",
        "key_2" : "Hello Meowww", 
    }
}

API返回成功响应:

{
    "multicast_id": 634054476369,
    "success": 1,
    "failure": 0,
    "canonical_ids": 0,
    "results": [
        {
            "message_id": "0:15329261441bfd36cccfb49c"
        }
    ]
}

在iOS应用的AppDelegate中:

func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
     print("Received data message: \(remoteMessage.appData)!")
     }

^从设备上的api成功打印消息:

  

收到的数据消息:[AnyHashable(“ collapse_key”):type_a,   AnyHashable(“ key_1”):密钥一的数据,AnyHashable(“ from”):9861340,   AnyHashable(“ key_2”):您好Meowww,AnyHashable(“ body”):通知,   AnyHashable(“ title”):测试]!

但是,此收到的消息不会对iOS设备执行任何APNs通知魔术。我试图将相同的json blob发送到Firebase API,但在NWPusher中工作正常:{"aps":{"alert":"Testing","badge":1,"sound":"default"}},但设备不显示通知。为什么?如何解决此问题以使Firebase发送相同的APNs通知以在设备上显示通知?

1 个答案:

答案 0 :(得分:0)

我只需要这样写带有“消息”和“数据”对象的请求:

{
    "to" : "aTokenHerefonsfondfodnfdofndf",
    "collapse_key" : "type_a",
    "notification":{
      "title":"Notification title test",
      "body":"It worked body"
    },
    "data" : {
        "body" : "Notification",
        "title": "testing",
        "key_1" : "Data for key 1",
        "key_2" : "Hello Meowww"
    }
}