Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:当应用程序在后台时,如何保持TCP套接字和NSNetService工作_Ios_Background Process_Voip_Gcdasyncsocket_Nsnetservice - Fatal编程技术网

iOS:当应用程序在后台时,如何保持TCP套接字和NSNetService工作

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(主页)按钮,插座不会断开连接,但不会响应,只有当应用程序重新打开时,数据才会发送到应用程序。通过阻塞屏幕,插座关

我正在使用GCDAsyncSocket、GCDAsyncUdpSocket和NSNetService做一个P2P VoIP应用程序,以便在网络上找到其他使用该应用程序的设备。 我有一个TCP套接字来传输用户数据和协商UDP连接

我需要在应用程序处于后台时将NSNetService服务保留在发布Bonjour中,并保留一个打开的套接字以接收来自其他设备的请求

按下iPhone的HOME(主页)按钮,插座不会断开连接,但不会响应,只有当应用程序重新打开时,数据才会发送到应用程序。通过阻塞屏幕,插座关闭

应用程序关闭时要发布的NSNetService

我激活了后台VoIP应用程序、音频等选项

我曾经

 [ asyncSocket performBlock : ^ {
        [ asyncSocket enableBackgroundingOnSocket ];
    }];

有人知道如何在iPhone被锁定时保持套接字和NSNetService正常工作吗?

我将我认为重要的内容用粗体显示出来

来自苹果:

VoIP套接字 VoIP(IP语音)应用程序预计将持续运行,以便能够监控VoIP控制连接;但是,为了最大限度地减少对系统的内存影响,应用程序在非活动状态下暂停要实现此功能,应用程序必须将其控制连接的数据套接字注册为VoIP套接字。以这种方式注册的套接字具有两个特殊功能:

当应用程序挂起时,系统代表应用程序监视套接字。如果任何数据到达套接字,系统将恢复应用程序的执行(尽管是在后台),然后应用程序可以从套接字读取数据并采取适当的操作(例如,通知用户来电)。 套接字的资源永远不会被回收。因此,应用程序可以安全地挂起,而不用担心它的套接字会变聋。 有关如何创建VoIP应用程序的更多信息,请参阅《iOS应用程序编程指南》

您还可以参考以下内容: