iOS 10 Firebase 通知未在后台显示

Posted

技术标签:

【中文标题】iOS 10 Firebase 通知未在后台显示【英文标题】:iOS 10 Firebase Notification not showing on background 【发布时间】:2016-09-27 20:35:32 【问题描述】:

我在运行 ios 10 的特定设备上接收推送通知(背景)时遇到问题。其他运行 iOS 9 的手机运行良好。

虽然如果我打开应用程序,通知会显示我实现的横幅。为什么在后台状态下不显示任何内容?

阅读 firebase 文档让我有些困惑

根据以下链接https://github.com/firebase/quickstart-ios/blob/master/messaging/FCMSwift/AppDelegate.swift 上的github firebase 示例,在didReceiveRemoteNotification 方法中有一条评论说:

// 如果您在应用运行时收到通知消息 背景,//在用户点击之前不会触发此回调 在启动应用程序的通知上。 // TODO: 处理数据 通知

所以如果我的应用程序在后台,Apple 不是做了所有事情来制作默认的 iOS 通知吗? content_available 值是否会对此产生干扰?我还发送通知和数据值。

这是我发送的 JSON 示例:


    "content_available": true,
    "priority": "high",
    "data": 
        "post_id": "...",
        "push_id": "..."
    ,
    "notification": 
        "title": "...",
        "body": "..."
    ,
    "registration_ids": ["xxxx"]

预期的行为是:

    应用死机:系统会显示通知 应用后台:系统会显示通知并调用 didReceiveRemoteNotification 方法。 应用处于活动状态:系统不会显示取消通知并调用 didReceiveRemoteNotification 方法。

对吗?

【问题讨论】:

您找到解决方案了吗? 【参考方案1】:

您的假设是正确的,除了第 2 点。在某些情况下,即使您设置了 content_avaialable,Apple 也不会调用 didReceiveRemoteNotification。

1) 设备电量不足且处于节电模式

2) 应用已禁用“后台应用刷新”

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

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

【讨论】:

圣母!几个世纪以来,我一直禁用我的背景刷新功能,然后忘记了它……为这个问题苦苦挣扎……

以上是关于iOS 10 Firebase 通知未在后台显示的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:当应用程序处于后台但未在 iOS 中终止时,无法在通知单击时重定向到特定屏幕

带有自定义声音的推送通知未在 iOS 中显示

Firebase 云消息传递未在 iOS 14 上提供推送通知

即使应用程序未在后台运行,VoIP 推送通知也会自动打开应用程序,这在 iOS 中是不是可行?

推送通知未在 iOS 10 设备中显示

PushNotification 横幅未在 ios 10.3 中显示