我对iOS SIP应用程序的理解或说VOIP应用程序是:
它是服务器和设备之间的持久TCP连接 . 一旦呼叫请求到来,它就会与服务器 Build 与其他设备的RTP连接 . 现在,您可以在此连接上交换语音或其他数据包并进行实时呼叫 .
使用Push Kit框架,我很困惑,它是如何工作的?
问题:
-
当应用程序转到后台时,我的VOIP TCP连接仍然存在或已关闭?
-
如果关闭,在获得VOIP APNS之后,SIP协议究竟是如何处理其主TCP连接的?
-
当VOIP APNS进来时我们是否必须 Build 连接?如果在那时由于某种原因 Build TCP失败怎么办?
-
我们在SIP服务器上需要做哪些改变才能实现这一目标?
可能是我的全部理解在这里是错误的 . 但我想知道关于VOIP应用程序如何与APNS协同工作的流程架构 .
我尝试通过互联网查看各种文章,但我对Push-Kit的VOIP-APNS的理解是,它会在后台唤醒你的应用程序,但是他们无法澄清我的上述问题 .
任何人都可以对这个话题有所了解 .
1 回答
是和否,当应用程序在iOS 9或更早版本上运行后,如果您进行了编程,它将保持连接,即这里有实时TCP连接的机会 .
但是在iOS 10中,一旦它处于后台,app就永远不会在任何条件下活着,即没有实时TCP连接的范围 .
一旦应用程序处于后台并且TCP连接关闭,在收到PushKit通知后,iOS将唤醒应用程序,那时我们需要运行代码片段再次与服务器 Build TCP连接 .
如果这次TCP连接失败,那么用户将无法获得语音,我们需要再次运行代码片段来连接TCP .
对于服务器端,它与APNS(常规推送通知)完全相同 . 见this SO post