我需要一些关于设计决策的帮助。我目前正在构建一个需要 VoIP 功能的 iOS 应用程序,但我有一些问题。
我了解 iOS 只能在后台保持 TCP 连接。如果我在通话期间打开了 RTP 连接,当用户进入后台时,该通话是否会丢失?如果是这样,Skype 和其他人如何做到这一点?
如果我必须简单地通过 TCP 流式传输音频以保持对话在后台进行,是否有人建议在通话期间抖动缓冲区为空的情况下如何保持音频同步?
我需要一些关于设计决策的帮助。我目前正在构建一个需要 VoIP 功能的 iOS 应用程序,但我有一些问题。
我了解 iOS 只能在后台保持 TCP 连接。如果我在通话期间打开了 RTP 连接,当用户进入后台时,该通话是否会丢失?如果是这样,Skype 和其他人如何做到这一点?
如果我必须简单地通过 TCP 流式传输音频以保持对话在后台进行,是否有人建议在通话期间抖动缓冲区为空的情况下如何保持音频同步?
对(1)的回答:
iOS VoIP 应用程序可能会在后台保留一个 TCP 套接字,通常是您的 SIP 套接字,以允许传入呼叫 (INVITE)。
当您的应用程序有一个活动呼叫并进入后台时,它没有任何限制,您可以保留任意数量的套接字。
关于 SIP 堆栈实现,您可能需要检查开源 PJSip 堆栈