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 中终止时,无法在通知单击时重定向到特定屏幕
Firebase 云消息传递未在 iOS 14 上提供推送通知