【问题标题】:iOS transfer RTP VoIP call to backgroundiOS 将 RTP VoIP 呼叫转移到后台
【发布时间】:2012-07-15 05:38:34
【问题描述】:

我需要一些关于设计决策的帮助。我目前正在构建一个需要 VoIP 功能的 iOS 应用,但我有一些问题。

  1. 我了解iOS只能在后台保持TCP连接。如果我在通话期间打开了 RTP 连接,当用户进入后台时,该通话是否会丢失?如果是这样,Skype 和其他人如何做到这一点?

  2. 如果我必须简单地通过 TCP 流式传输音频以保持对话在后台进行,是否有人建议在通话期间抖动缓冲区为空的情况下如何保持音频同步?

【问题讨论】:

    标签: ios audio-streaming voip rtp


    【解决方案1】:

    回答(1):

    iOS VoIP 应用程序可能会在后台保留一个 TCP 套接字,通常是您的 SIP 套接字,以允许传入呼叫 (INVITE)。

    当您的应用有一个活动调用并进入后台时,它没有任何限制,您可以保留任意数量的套接字。

    Here is a more detailed answer from another thread

    关于 SIP 堆栈实现,您可能需要检查open-source PJSip stack

    【讨论】:

    • 我现在唯一的问题是操作系统仍然会关闭应用程序,无论我的 keepAlive 到服务器。您是否碰巧知道发生这种情况的具体原因。套接字保持打开状态,您甚至可以在应用程序关闭 8 小时后调用该应用程序。但是,它会随机死亡吗?
    • 尝试检查崩溃日志,系统不应该停止你的应用程序,当它崩溃时它会在后台重新启动,所以当你的 applicationDidFinishLaunching 时,你应该检查 UIApplication 状态 - 如果它在后台,恢复你的连接。你处理过网络可达性吗?如果没有网络或网络发生变化(也在后台),套接字可能已关闭,您需要重新连接。
    • 哇,你完全正确。找到一堆崩溃日志。感谢您的帮助
    • 没问题 :) 另一个提示 - 在后台启动时,请求后台任务以避免在恢复连接时被挂起
    猜你喜欢
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多