我在运行iOS 10的特定设备上接收推送通知(后台)时遇到问题。其他配备iOS 9的手机都运行良好。
虽然如果我打开应用程序,通知会显示我实施的横幅。为什么在背景状态下不显示任何内容?
阅读firebase文档让我有些困惑
根据以下链接https://github.com/firebase/quickstart-ios/blob/master/messaging/FCMSwift/AppDelegate.swift上的github firebase示例,didReceiveRemoteNotification方法中有一条注释说明:
//如果您在应用进入时收到通知消息 背景,//在用户点击之前不会触发此回调 在启动应用程序的通知上。 // TODO:处理数据 通知
所以我的应用程序是在后台,苹果不做整个事情来制作默认的iOS通知吗? content_available值是否会干扰这个?我还发送通知和数据值。
以下是我发送的JSON示例:
{
"content_available": true,
"priority": "high",
"data": {
"post_id": "...",
"push_id": "..."
},
"notification": {
"title": "...",
"body": "..."
},
"registration_ids": ["xxxx"]
}
预期的行为是:
右?
答案 0 :(得分:2)
除了数字2之外,你的假设是正确的。有几种情况下,即使你设置了content_avaialable,apple也不会调用didReceiveRemoteNotification。
1)设备电池电量低,处于省电模式
2)应用已经"后台应用刷新"禁用
3)苹果决定不唤醒你的应用程序的其他未记录的场景。 Apple保留出于性能原因不发送通知的权利。
话虽如此,如果用户点击通知,您将始终在didReceiveRemoteNotification中获取有效负载。