iOS - 当蜂窝连接处于活动状态30分钟后,持续的Wi-Fi超时

时间:2012-12-12 19:33:01

标签: ios ios6 wifi core-audio nsstream

我正在使用的应用程序需要wifi才能持续开启,因为我使用wifi网络发送/接收音频。然后播放音频。需要持续这样做,直到用户选择停止它。

问题: iOS 30分钟后关闭WiFi,因此套接字关闭,AudioQueues停止。以下是Apple文档的摘录:

  

为了防止Wi-Fi硬件使用太多电量,iOS有一个   内置计时器,30分钟后完全关闭硬件   如果没有正在运行的应用程序通过该请求使用它   UIRequiresPersistentWiFi键。如果用户启动了一个应用程序   包括密钥,iOS有效地禁用持续时间的计时器   应用程序的生命周期。该应用程序退出或暂停后,   但是,系统重新启用计时器。

     

注意:请注意即使   UIRequiresPersistentWiFi的值为true,它没有效果   设备处于空闲状态(即屏幕锁定)。该应用程序被考虑   不活动,虽然它可能在某些级别上起作用,但它没有Wi-Fi   连接。

已经实施的内容:

  1. 在设备上激活音频会话。它保持这种状态,直到用户选择停止音频或连接丢失并且AudioQueues也被停止为止。

  2. 在.plist文件中将UIRequiresPersistentWiFi设置为true

  3. 实施可达性API以检测任何连接丢失并做必要的事情。

  4. “应用程序无法在后台运行”在.plist文件中设置为“false”

  5. “必需的背景模式”在.plist文件的数组中有“App播放音频”项。

  6. NSStreamNetworkServiceTypeVoiceforKey在属性NSStreamNetworkServiceType上为两个设备上的套接字设置。

  7. 套接字上设置的kCFStreamPropertyNoCellular属性值为kCFBooleanTrue无效

  8. 唯一有帮助的设置是将NSStreamNetworkServiceType设置为NSStreamNetworkServiceTypeVoIP,并为.plist文件中的“Required Background modes”字段添加“App for IP over IP services”。但是Apple会拒绝该应用程序,因为它没有在应用程序中实现任何VoIP服务。

  9. 我一直在与Apple DTS谈论这个问题,据他们说,没有API级别的支持来帮助解决这个问题。然而,我对此声明有疑问,应用程序商店中有几个应用程序(例如Pandora)需要此功能。

1 个答案:

答案 0 :(得分:0)

禁用设备睡眠计时器并告诉用户将应用程序保留在前台。这样可以防止显示屏关闭(屏幕锁定),这将阻止设备进入低功耗状态,这样WIFI无线电就可以保持通电状态。