据我所知,当用户通过多任务UI终止应用程序时,静默推送通知不会调用application:didReceiveRemoteNotification:fetchCompletionHandler:
。但是在查看WhatsApp的行为时,我不明白他们如何做到以下几点:
- 将频道静音
- 强制退出WhatsApp
- 在静音频道中接收消息
- 显示徽章
- 更令人惊讶的是=>
- 在不启动WhatsApp的情况下,启动飞行模式
- 现在启动WhatsApp =>文本显示在正确的位置
这意味着WhatsApp以某种方式管理它以处理推送通知的接收,尽管该应用程序被杀死。有人知道如何吗?随着.badge
,.alert
,...?
还有其他方法可以更新应用程序。另一种方法是使用后台应用刷新。后台应用刷新允许应用在后台定期运行,以便它可以更新其内容。
--编辑以添加其他可能的方法:--
在应用程序被杀死后,可以在短时间内(固定长度时间(使用的另一种方法是请求后台执行时间。这可以为应用提供更多运行时间。
对于需要更多执行时间才能实现的任务,您必须请求特定权限才能在后台运行它们而不会挂起它们。在 iOS 中,只允许特定的应用类型在后台运行。例如,支持互联网协议语音 (VoIP( 的应用或充当蓝牙 LE 配件的应用。
--编辑 #2 --
从WhatsApp应用程序的info.plist来看,它使用了多个UIBackgroundModes,其中任何一个都可以用来唤醒/保持应用程序在后台。
WhatsApp的info.plist的一部分:
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>fetch</string>
<string>remote-notification</string>
<string>voip</string>
</array>