iOS 通知:WhatsApp 在强制关闭后如何接收通知和处理?

Posted

技术标签:

【中文标题】iOS 通知:WhatsApp 在强制关闭后如何接收通知和处理?【英文标题】:iOS Notification : How does WhatsApp receive notification and process even after force closing them? 【发布时间】:2019-02-06 12:28:00 【问题描述】:

我正在构建一个 ios 应用程序(使用 Swift),即使我的应用程序已关闭(强制关闭),我也想在其中处理通知。

我收到了通知警报,但是直到用户单击通知徽章后才会处理它。

但是,当我检查通知行为或 WhatsApp 时,即使在使用通知徽章之前关闭 Whatsapp 时,WhatsApp 仍会收到通知。

我在论坛和所有论坛中搜索过,如果应用程序未运行,则无法处理您的通知。 (App在后台或前台都可以处理)

我的问题: 如果根据 Apple 文档,如果 App 未运行则无法处理通知,那么 Whatsapp 是如何做到的。

如何在我的应用中实现相同的行为?我将非常感谢正确的技术解决方案,我相信有数百名开发人员可能有相同的查询。

【问题讨论】:

您可以在通知负载中使用content-available,但它也有限制。 不确定,但什么是基于 VOIP 的应用程序,因此即使在某些 VOIP 信号的终止状态下,它也可以启动它的进程。就像what's app可以持续分享实时位置一样 请检查以下线程:forums.xamarin.com/discussion/67698/… 我认为这个问题可能会有所帮助,但它适用于 obj-c ***.com/questions/38512456/… 我想这取决于你是发送文本通知还是数据通知。 【参考方案1】:

由于WhatsApp是一个VoIP应用程序,它有权使用PushKit:

PushKit 通知与您使用 UserNotifications 框架处理的通知不同。具体来说,PushKit 通知永远不会显示警报、标记应用程序的图标或播放声音。与用户通知相比,它们还具有以下优势:

设备只有在收到 PushKit 通知时才会唤醒,这样可以延长电池寿命。
收到 PushKit 通知后,如果您的应用程序没有运行,系统会自动启动它。相比之下,用户通知不能保证启动您的应用。 系统会为您的应用程序提供执行时间(可能在后台)以处理 PushKit 通知。 PushKit 通知可以包含比用户通知更多的数据。

注意第二个要点。

如果您的应用符合 PushKit 使用标准(VoIP 应用、Watch Complication 更新或文件提供程序更新),那么您可以使用它。

更新

在 iOS 13 及更高版本中,应用必须报告传入的 CallKit 呼叫以响应 VoIP 推送,否则它将被终止。这意味着一般 VoIP 或 PushKit 推送不能用于消息传递或其他目的,但 WhatsApp 不会这样做。怎么样?

他们拥有受限权利com.apple.developer.pushkit.unrestricted-voip

此权利不再授予,旨在让拥有数百万用户的应用有更多时间采用新方法。

【讨论】:

曾经是真的。现在,如果将 PushKit 用于 VoIP(> iOS 13),您需要调用 CallKit,而 Whatsapp 并非一直都这样做(例如,视频通话通知)。所以OP问题保持不变...... WhatsApp 有一项特殊权利,允许无限制的 voip 推送【参考方案2】:

他们使用静默通知。静默通知会在后台唤醒应用 30 秒,然后您可以做任何您需要的事情。

有关完整的详细信息,您可以查看此链接。 https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_updates_to_your_app_silently

【讨论】:

静默通知会唤醒应用几秒钟 --> 你能详细说明一下吗 我不相信这是真的。不保证会发送无提示通知。

以上是关于iOS 通知:WhatsApp 在强制关闭后如何接收通知和处理?的主要内容,如果未能解决你的问题,请参考以下文章

收到推送通知后,Whatsapp 服务在强制停止后重新启动

即使应用程序关闭,whatsapp 如何设法接收推送通知?

如何在应用关闭时显示推送通知,类似于 facebook 和 whatsapp

推送通知代码执行(强制退出应用)

替换 WhatsApp 等推送/本地通知

在 Whatsapp 或 Viber 上接收推送通知即时消息