iOS:当应用程序在后台时,如何保持TCP套接字和NSNetService工作
我正在使用GCDAsyncSocket、GCDAsyncUdpSocket和NSNetService做一个P2P VoIP应用程序,以便在网络上找到其他使用该应用程序的设备。 我有一个TCP套接字来传输用户数据和协商UDP连接 我需要在应用程序处于后台时将NSNetService服务保留在发布Bonjour中,并保留一个打开的套接字以接收来自其他设备的请求 按下iPhone的HOME(主页)按钮,插座不会断开连接,但不会响应,只有当应用程序重新打开时,数据才会发送到应用程序。通过阻塞屏幕,插座关闭 应用程序关闭时要发布的NSNetService 我激活了后台VoIP应用程序、音频等选项 我曾经iOS:当应用程序在后台时,如何保持TCP套接字和NSNetService工作,ios,background-process,voip,gcdasyncsocket,nsnetservice,Ios,Background Process,Voip,Gcdasyncsocket,Nsnetservice,我正在使用GCDAsyncSocket、GCDAsyncUdpSocket和NSNetService做一个P2P VoIP应用程序,以便在网络上找到其他使用该应用程序的设备。 我有一个TCP套接字来传输用户数据和协商UDP连接 我需要在应用程序处于后台时将NSNetService服务保留在发布Bonjour中,并保留一个打开的套接字以接收来自其他设备的请求 按下iPhone的HOME(主页)按钮,插座不会断开连接,但不会响应,只有当应用程序重新打开时,数据才会发送到应用程序。通过阻塞屏幕,插座关
[ asyncSocket performBlock : ^ {
[ asyncSocket enableBackgroundingOnSocket ];
}];
有人知道如何在iPhone被锁定时保持套接字和NSNetService正常工作吗?我将我认为重要的内容用粗体显示出来 来自苹果: VoIP套接字 VoIP(IP语音)应用程序预计将持续运行,以便能够监控VoIP控制连接;但是,为了最大限度地减少对系统的内存影响,应用程序在非活动状态下暂停要实现此功能,应用程序必须将其控制连接的数据套接字注册为VoIP套接字。以这种方式注册的套接字具有两个特殊功能: 当应用程序挂起时,系统代表应用程序监视套接字。如果任何数据到达套接字,系统将恢复应用程序的执行(尽管是在后台),然后应用程序可以从套接字读取数据并采取适当的操作(例如,通知用户来电)。 套接字的资源永远不会被回收。因此,应用程序可以安全地挂起,而不用担心它的套接字会变聋。 有关如何创建VoIP应用程序的更多信息,请参阅《iOS应用程序编程指南》 您还可以参考以下内容: