iOS 10 Firebase通知未显示在后台

时间:2016-09-27 20:35:32

标签: ios firebase notifications apple-push-notifications firebase-notifications

我在运行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"]
}

预期的行为是:

  1. App dead:系统将显示通知
  2. 应用程序背景:系统将显示通知并调用didReceiveRemoteNotification方法。
  3. App active:系统不会显示de通知并调用didReceiveRemoteNotification方法。
  4. 右?

1 个答案:

答案 0 :(得分:2)

除了数字2之外,你的假设是正确的。有几种情况下,即使你设置了content_avaialable,apple也不会调用didReceiveRemoteNotification。

1)设备电池电量低,处于省电模式

2)应用已经"后台应用刷新"禁用

3)苹果决定不唤醒你的应用程序的其他未记录的场景。 Apple保留出于性能原因不发送通知的权利。

话虽如此,如果用户点击通知,您将始终在didReceiveRemoteNotification中获取有效负载。