Ios 从后台唤醒应用程序时voip推送和常规推送的区别

Ios 从后台唤醒应用程序时voip推送和常规推送的区别,ios,apple-push-notifications,voip,Ios,Apple Push Notifications,Voip,我有一个用于定期推送通知的消息服务。例如,当一个用户发送一条消息时,另一个用户会收到带有该消息的推送通知。我注意到,如果手机使用wifi和3g/4g,并且应用程序被关闭(屏幕被锁定),则会收到通知。如果设备仅在wifi上,且应用程序被关闭(屏幕被锁定),则不会收到通知 我的假设是,为了节省电池,设备会在一段时间后与wifi断开连接,这就是为什么不会收到推送通知的原因 但当我使用VOIP推送通知时,情况就不同了。即使应用程序被关闭且设备处于wifi状态(且屏幕被锁定),也会收到通知。那么这意味着什

我有一个用于定期推送通知的消息服务。例如,当一个用户发送一条消息时,另一个用户会收到带有该消息的推送通知。我注意到,如果手机使用wifi和3g/4g,并且应用程序被关闭(屏幕被锁定),则会收到通知。如果设备仅在wifi上,且应用程序被关闭(屏幕被锁定),则不会收到通知

我的假设是,为了节省电池,设备会在一段时间后与wifi断开连接,这就是为什么不会收到推送通知的原因

但当我使用VOIP推送通知时,情况就不同了。即使应用程序被关闭且设备处于wifi状态(且屏幕被锁定),也会收到通知。那么这意味着什么呢?如果手机与wifi断开连接,它是如何接收此通知的


我在这里遗漏了什么?

这一点你几乎是对的——这就是voIP的工作原理。摘自

在过去,VoIP应用程序必须维护一个持久的网络 与服务器连接以接收传入呼叫和其他数据。 这意味着要编写复杂的代码,定期来回发送消息 在应用程序和服务器之间切换,以保持连接处于活动状态,甚至 当应用程序未被使用时。这种技术导致频繁的设备故障 唤醒浪费的能量。这也意味着如果用户退出VoIP 应用程序,无法再接收来自服务器的呼叫

开发人员应该使用PushKit,而不是持久连接 允许应用程序接收推送(通知)的框架API 当数据可用时)从远程服务器。只要有人推 收到后,将调用应用程序执行操作。例如,VoIP应用程序可以 收到呼叫时显示警报,并提供选项 接受或拒绝呼叫。它甚至可以开始采取先发制人的措施 如果用户决定接受,则启动呼叫


此外,为了补充Sivajee Battina的答案,您可以在

使用PushKit接收VoIP推送有许多优点:

  • 只有当VoIP推送发生时,设备才会被唤醒,从而节约能源

  • 与标准推送通知不同,用户必须在推送通知之前做出响应 你的应用程序可以执行一个操作,直接转到你的应用程序 用于处理

  • VoIP推送被视为高优先级通知 并立即交付。

  • VoIP推送可以包含比标准推送通知更多的数据

  • 如果接收到VoIP推送时应用程序未运行,则会自动重新启动

  • 您的应用程序被赋予运行时来处理推送,即使您的 应用程序正在后台运行

因此,第三点确认,在某些情况下,您的标准推送通知可能会延迟,而VoIP推送通知始终会立即发送


另外,请看一下标准推送通知延迟或丢失的原因。

我认为当您的iOS设备进入睡眠模式时,wifi不会完全断开。iOS上的Wifi芯片可能会跟随无线LAN上的Wake等。始终提供Voip推送的原因是因为Voip保证是实时的!所有其他非voip推送(包括静默通知)都不可靠,iOS可能会有选择地丢弃它们,以便在睡眠模式下节省电池电量。文档:“与UserNotifications框架支持的用户通知不同,PushKit通知从不向用户显示,它们不显示徽章、警报或声音。“因此,可以安全地假设,正常的推送通知是无用的,因为您的应用程序可能处于屏幕锁定的终止阶段,推送通知不会唤醒设备。虽然VOIP总是最好的,但如果VOIP被用作推送,苹果会拒绝该应用。现在该怎么办?@Shubham1164 VoIP推送只应用于报告来电,正常推送通知应用于其他一切。若要使用VoIP推送,您的应用程序必须符合该条件(例如:带有VoIP呼叫的消息传递应用程序),因此苹果将拒绝使用该应用程序但没有资格这样做的应用程序。此外,iOS 13为VoIP推送带来了新的限制,使得它们无法报告非来电的内容。因此,可以安全地假设,正常推送通知是无用的,因为您的应用程序可能在屏幕锁定的情况下处于终止阶段,推送通知不会唤醒设备。尽管VOIP总是最好的,但如果VOIP被用作推送,苹果会拒绝该应用。现在该怎么办?