当应用程序在ios中处于后台时接收voip电话

我想我有所有的要求,当应用程序在后台时有一个“活着”的套接字。 也就是说:

  • 我的应用程序具有voip和音频作为其背景模式。
  • 我使用PJSIP作为SIP库,它应该使用CFReadStreams,并启用“在后台运行”属性
  • 该应用程序正在使用TCP建立与SIP服务器的连接。
  • 当应用程序发送到后台时,它会添加一个后台处理程序,该程序会在每个时间段发送一个“keepAlive”消息。

    keepAlive似乎正在工作。 如果我检查服务器中的日志,即使应用程序不在前台,我也可以看到消息是如何到达的。

    问题(和问题)是,当应用程序处于后台时,我没有收到呼叫。

    看起来套接字还活着,如果我在前台没有应用程序时打电话给手机,什么都不会发生,但如果我自己启动应用程序,则会自动检测到该通话。

    谢谢 :)


    我们发现了这个问题。

    根据当前配置,服务器使用不同的连接从手机使用的初始TCP套接字发送INVITE请求,以发送初始REGISTER请求。

    由于两个插座不同,操作系统没有唤醒应用程序。

    如果你配置服务器(在我们的例子中是Kamailio)重用电话用来发送第一个REGISTER的初始套接字,它可以无缝工作。

    默认情况下,SIP服务器似乎为每个要发送到手机的INVITE请求创建新的套接字。 这种情况对iphone背景模型来说是个问题。


    为了仔细检查,你已经阅读了这个:http://trac.pjsip.org/repos/wiki/Getting-Started/iPhone#UnabletoacceptincomingcallinbackgroundmodeiOS4

    另外,请使用来自Subversion存储库的最新1.x分支进行尝试,iOS支持已有多个修复。

    链接地址: http://www.djcxy.com/p/62861.html

    上一篇: Receiving voip calls while application is in background in ios

    下一篇: Making a phone call from apps