在iphone中创建递归后台处理程序是否合法?(当app进入后台时处理)

如果我为后台应用程序注册一个应用程序,输入后台并使用大约10分钟的后台处理程序来完成任务,在时间结束后,处理程序将调用finish块并在此块中再次创建后台处理程序,您将再次获得10分钟等等,这样应用程序将保留在后台。 我的意思是这样做好吗? 还是苹果反对这个?

是的,这是正确的,你不能以这种方式无限运行。 但我发现了另一个技巧,当应用程序进入后台时,开始播放0音量的音频:-)您的应用程序永远不会被杀死。

有一个VoIP应用程序Media5,它可以使用UDP套接字在后台接收来电。

开发人员表示他们使用“技巧”来永久保存应用程序,我将排除静音音频播放选项。 所以问题是:那是什么伎俩?

Bria也可以在后台接收UDP。

来自问题5的评论20 :对具有多任务支持的iPhone的后台应用程序支持 :

我很确定如果不连续播放音频文件或记录GPS位置,你就无法在iOS 4.3+中保留UDP侦听套接字(主线程或辅助线程)。 如果你每隔5秒在nsrunloop中播放AVAudioPlayer(之前初始化AudioSession之后)的音频播放,主线程将保持活动状态,而且不必在info.plist中声明音频背景支持。

我认为这是Media5和Bria使用的“技巧”。 我还尝试为loopback接口创建一个无限的TCP流,将其声明为VoIP,只是为了查看UDP套接字是否保持活动状态。 答案是否定的,只有TCP套接字在后台工作(并且屏幕锁定),UDP同时关闭,不能再侦听来电。

因此关键点在于主线程必须保持活动状态…使用简单的nstimer o无限的runloop是没用的,因为看门狗在后台几秒钟后就会终止进程(除非你在附带GDB接口的调试模式下工作) ,它永远运行)。