当从背景唤醒应用程序时,voip推和常规推送之间的区别

时间:2017-07-10 10:33:43

标签: ios apple-push-notifications voip

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

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

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

我在这里缺少什么?

2 个答案:

答案 0 :(得分:6)

你几乎是正确的 - 这就是voIP的工作原理。摘自 Apple Docs

  

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

     

开发人员应该使用PushKit而不是持久连接   framework-APIs允许应用程序接收推送(通知   当数据可用时)来自远程服务器。每当推动时   收到后,应用程序即可开始行动。例如,VoIP应用程序可以   收到呼叫时显示提醒,并提供选项   接受或拒绝来电。它甚至可以开始采取前期步骤   在用户决定接受的情况下发起呼叫。

答案 1 :(得分:6)

此外,要添加到Sivajee Battina的答案中,您可以在guidelines中阅读:

  

使用PushKit接收VoIP推送有很多好处:

     
      
  • 只有在VoIP推送发生时才会唤醒设备,从而节省能源。
  •   
  • 与标准推送通知不同,用户必须先响应   您的应用可以执行操作,VoIP推送直接进入您的应用程序   处理。
  •   
  • VoIP推送被视为高优先级通知   并且毫不拖延地交付。

  •   
  • VoIP推送可包含的数据多于标准推送通知所提供的数据。

  •   
  • 如果在收到VoIP推送时它未运行,您的应用会自动重新启动。

  •   
  • 您的应用程序将获得运行时来处理推送,即使您的应用也是如此   应用程序正在后台运行。

  •   

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

另外,请查看此question,了解标准推送通知被延迟或删除的原因。