【问题标题】:iOS Notification : How does WhatsApp receive notification and process even after force closing them?iOS 通知:WhatsApp 在强制关闭后如何接收通知和处理?
【发布时间】: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 stackoverflow.com/questions/38512456/…
  • 我想这取决于你是发送文本通知还是数据通知。

标签: ios push-notification notifications


【解决方案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

【讨论】:

  • 静默通知会唤醒应用几秒钟 --> 你能详细说明一下吗
  • 我不相信这是真的。不保证会发送无提示通知。
猜你喜欢
  • 1970-01-01
  • 2016-10-10
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-22
相关资源
最近更新 更多