【发布时间】:2020-03-17 13:46:55
【问题描述】:
我正在开发一个处理静默通知的框架,以便部署本地通知(带有警报),原因是我从 Firebase 发送数据消息,其中有效负载具有自定义键值对(表示通知的行为方式),所以我必须在应用程序中接收它们才能翻译它们。
一切正常,我在应用程序执行时在前台和后台接收通知。问题是当应用程序被用户杀死或完全关闭时,我无法收到通知。原因在 Apple 文档中指出,如果用户关闭应用程序,didReceiveRemoteNotification:fetchCompletionHandler 将不会被执行,因为系统不会启动应用程序。
所以,有人告诉我,即使应用程序关闭,我也应该使用默认的 apns 键值对来接收默认推送通知,如果我想修改或添加某些内容到收到请求的通知中,请使用通知服务扩展的内容。
我遇到的问题是,当我收到静默通知时,我应该做一些额外的处理,比如报告我收到了它。这就是我认为应用程序应该执行的原因,因为它需要执行时间。
但我一直在思考和研究,我无法理解其他应用程序(如 youtube、facebook .. 等)即使关闭应用程序也能接收带有图像附件的通知,难道不应该为了添加附件您需要在本地附加任何内容吗?所以您应该以某种方式下载它,并且此过程需要应用程序有时间执行该任务,还是由 IOS 管理?
或者我错过了关于推送通知的一些内容?
【问题讨论】:
-
无论应用程序是否打开,都可以显示“标准”远程通知。这一切都由操作系统处理,与本地预定通知相同。 iOS 知道如何处理它们,因为它可以显示所有需要的信息。
-
@Scriptable 很好,现在我明白了。如果我必须在通知到达时向端点发送请求怎么办?我的意思是我已经实现了,我收到了静默通知,并使用我收到的有效负载将其转换为本地通知。有没有办法通过普通通知来做到这一点?,因为正如你所说,当应用程序未打开时可以显示标准远程通知,但考虑到我必须将此信息发送到端点,我无法在应用程序时做到这一点完全关闭,因为我需要执行时间,但通知将被显示,我说得对吗?
-
当收到标准远程通知并且应用程序打开时,应用程序将收到通知,如果应用程序被终止,则不会。但如果用户点击通知,应用程序将启动,并且 launchOptions 将包含通知中的 APNS 数据
标签: ios push-notification apple-push-notifications silent-notification