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

Dha*_*tel 3 notifications push-notification ios

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

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

  • 但是,当我检查通知行为或 WhatsApp 时,即使 Whatsapp 在使用前已关闭,也请点击通知徽章。

  • 我在论坛上进行了搜索,并且在大多数情况下都提到过,如果应用程序未运行,您的通知将无法处理。(如果应用程序在后台或前台,它可以处理)

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

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

Pau*_*w11 5

由于 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

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