iOS 13上Firebase推送通知无法正常工作,但在iOS 12.4上可以正常工作。有解决方案吗?
编辑日期:2019年10月4日
iOS 13上静默推送通知无法工作。
iOS 13上Firebase推送通知无法正常工作,但在iOS 12.4上可以正常工作。有解决方案吗?
编辑日期:2019年10月4日
iOS 13上静默推送通知无法工作。
{
"topic": "topic_test",
"message": {
"data": {
"key": "some_value"
},
"notification": {
"body": "description ~",
"title": "title !"
}
},
"options": {
"mutableContent": true,
"contentAvailable": true,
"apnsPushType": "background"
}
}
{
"to":"",
"priority":"high",
"content_available":true,
"data":{
"abc":"abc"
},
"notification":{
"body":"abc"
}
}
Or
{
"to":"",
"priority":"high",
"content_available":true,
"data":{
"abc":"abc"
}
}
https://fcm.googleapis.com/fcm/send
在Postman的头部中:
1). Authorization = key="添加Firebase服务器密钥"
2). Content-Type = application/json
在Postman的请求体中:
{ "to" : "您的iPhone设备FCM令牌", "notification" : { "body" : "您的通知正文", "title": "您的通知标题", "sound": "default", "alert":"新" }, "priority": "high", "contentAvailable": true, "data" : { "body" : "数据中的通知正文", "title": "数据中的通知标题", "key_1" : "键1的值", "key_2" : "键2的值", } }
首先使用上述示例在Postman中尝试并检查iOS 13中的结果。
可能与从Data
对象中提取推送令牌的方式有关。我对Firebase推送通知不是特别熟悉,但是如果您必须将推送令牌传递给Firebase,则可能需要更改获取令牌的方式。如果Firebase有一个处理此操作的SDK,则您可能需要更新它。
OneSignal在这里谈到了这个变化。
在更新我的Pods后,我遇到了同样的问题。从版本6.18.0开始:
通过shouldEstablishDirectChannel已弃用FCM直接通道消息传递。相反,使用APNs进行下行消息传递。如果您想继续使用旧版API,请在负载中添加content_available键,但我们强烈建议使用HTTP v1 API,因为它提供完整的APNs支持。弃用的API将在Firebase 7中删除(#4710)。发布说明。
在我的AppDelegate中,我注释掉了两行代码:
func connectToFCM() {
// Messaging.messaging().shouldEstablishDirectChannel = true
}
func disconnectFCM() {
// Messaging.messaging().shouldEstablishDirectChannel = false
}
当我使用设备令牌向我的设备发送通知时,一切似乎都正常工作。然而,在将更新上传到应用商店后,我看到了以下内容:
0%的潜在用户有资格参加此活动:0
我重新从Firebase下载了GoogleService-Info.plist,并将其与xcworkspace中已有的进行了比较。GOOGLE_APP_ID已更改。因此,替换.plist即可解决问题。我不确定为什么.plist中的信息会更改。希望这可以帮助到您。
附注-当前Pods版本为6.23.0