如果这是一个愚蠢的问题,很抱歉,我是第一次用APN设置Firebase。我在Swift中使用iOS应用程序工作,在没有Firebase的情况下,我有单独工作的apns消息,所以远程推送通知会在后台和运行应用程序时在设备上接收。我可以用这个工具https://github.com/noodlewerk/NWPusher通过发送这个json blob(例如(成功地在Sandbox和Production apns证书上发送通知
{"aps":{"alert":"Testing","badge":1,"sound":"default"}}
然而,现在我正在尝试合并Firebase,而不是在iOS设备上获得相同的行为。
我有Firebase消息设置,应用程序使用"shouldEstablishDirectChannel = true"
打印远程消息,但从未收到APN(如果此设置为false,则设备不会打印任何内容(。设备上未收到推送通知。我不相信Firebase消息的APN映射正确,因为我无法让设备像在严格意义上的APN沙盒和生产证书上使用NWPusher那样显示推送通知。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"(:你好,AnyHashble("body"(:通知,AnyHashable("title"(:测试]!
然而,收到的这条消息对iOS设备没有任何APN通知魔力。我试图将相同的json blob发送到Firebase API,它在NWPusher:{"aps":{"alert":"Testing","badge":1,"sound":"default"}}
中运行良好,但设备不显示通知。为什么?如何解决此问题,使Firebase发送相同的APN通知以在设备上显示通知?
我只需要编写带有"message"one_answers"data"对象的请求,如下所示:
{
"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"
}
}