为什么我没有收到背景中未收到的通知???
这是我使用推送通知时的第一次体验。我阅读了文档,并按照Google Firebase Doc的指南进行操作。我还实现了firebase/quickstart-ios的代码。之后我在firebase服务上创建了控制台,上传了我的证书并成功发送了我在前台收到的消息,所以在Backround中也是如此。
但是,当我更改从后端开发人员处获取的控制台时,我的应用程序停止在后台模式下执行推送通知。
我在做什么:
我无法理解为什么app停止在后台接收通知,如果它之前运作良好。
我也在stackoverflow上阅读了相同的问题,但没有找到问题的解决方案。
请帮忙解决这个问题!
更新
实际上,我没有收到背景中的任何通知,所以在Foreground中。原因是当我从第一个控制台安装带有GoogleService-Info.list的应用程序时,我接受了接收通知。所以,如果您更改控制台,当然您更改了GoogleService-Info.list,您应该再次接受接收通知!如果您不接受, didReceiveRemoteNotification 将不会致电!
答案 0 :(得分:0)
您还没有添加任何代码,因此可能需要考虑以下几点:
确保您定义了fetchCompletionHandler,以便content-available: true
能够在收到推送通知时唤醒应用。
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler:{ @escaping (UIBackgroundFetchResult) -> Void)
fetchCompletionHandler(UIBackgroundFetchResultNewData);
}
FCM根据推送通知有效负载中包含的内容处理不同的通知。尝试使用仅具有数据的有效负载和仅通知有效负载的推送通知,试验并查看会发生什么。
{
"to":"push_token",
"content_available": true,
"priority": "high",
"notification": {
"title": "New Message",
"message": "Bob sent you a message",
},
"data": {
"title": "New Message",
"message": "Bob sent you a message",
}
}
使用此CURL命令而不是使用firebase控制台测试发送推送通知
curl -X POST --header "Authorization: key=APIKEY" --Header "Content-Type: application/json" https://fcm.googleapis.com/fcm/send -d "@push_payload.json"
答案 1 :(得分:0)
原因是当我从第一个控制台安装带有GoogleService-Info.list的应用程序时,我接受了接收通知。所以,如果您更改控制台,当然您更改了GoogleService-Info.list,您应该再次接受接收通知!如果您不接受, didReceiveRemoteNotification 将不会致电!
P.S。 在我的变体中,我通过调配实现通知。如果您选择相同的方式,请确保在Info.plist文件中有属性 FirebaseAppDelegateProxyEnabled ,其值设置为是