iOS - 当蜂窝连接处于活动状态时,30分钟后持续wi-fi超时
我正在使用的应用程序需要WiFi,因为我使用wifi网络发送/接收音频时需要不停地打开。然后播放音频。需要持续这样做直到用户选择停止它为止。iOS - 当蜂窝连接处于活动状态时,30分钟后持续wi-fi超时
问题: iOS在30分钟后关闭WiFi,因此套接字关闭,AudioQueues停止。下面是苹果的文件的摘录:
为了防止Wi-Fi硬件使用的权力太大,iOS版具有 内置计时器,关闭硬件完全30分钟 如果没有正在运行的应用程序有后请求通过 UIRequiresPersistentWiFi密钥使用。如果用户启动了包含密钥的应用,则iOS会在应用生命周期的有效期 之前有效地禁用该计时器。但是,一旦该应用程序退出或被暂停, 然而,系统重新启用计时器。
注:注意,即使当 UIRequiresPersistentWiFi具有真值,它没有任何效果时 设备空闲(即,屏幕锁定)。该应用程序被认为是不活动的 ,虽然它可能在某些级别上运行,但它没有Wi-Fi 连接。那些已经实施
事情:
的audiosession在设备上激活。直到用户选择停止音频或直到连接丢失并且AudioQueues也停止为止。
UIRequiresPersistentWiFi设置为true在的.plist文件
可达性的API实现检测到任何连接损耗和做要紧。
“应用程序在后台不运行”设置为“假”中的.plist文件
“所需的背景模式”有项目“应用程序播放音频”数组中的文件的.plist 。
NSStreamNetworkServiceTypeVoiceforKey在属性NSStreamNetworkServiceType上为两个设备上的套接字设置。
的kCFStreamPropertyNoCellular财产上的插座,以kCFBooleanTrue的值设置不利于
,帮助被设置NSStreamNetworkServiceType到NSStreamNetworkServiceTypeVoIP并加入了“应用程序通过IP服务提供语音”为唯一设置了“ .plist文件中所需的背景模式“字段。不过,苹果会拒绝该应用程序在应用程序中未实施任何VoIP服务。
我一直在谈论苹果DTS这个问题,据他们说没有API级的支持,以帮助解决这个问题。然而,我对这个说法有所怀疑,应用商店中有几个应用程序(例如Pandora)需要这个功能。
禁用设备睡眠定时器并通知用户将应用保持在前台。这将防止显示器关闭(屏幕锁定),这将阻止设备进入较低功率状态,这将允许WIFI无线电保持通电。
但为什么不仅缓冲足够时间来重新连接到蜂窝上的流? – hotpaw2
期待应用程序保持在前台不是应用程序的预期行为。否则,这可能是该问题最简单的解决方案。此外,该应用程序旨在通过本地Wi-Fi网络使用,并与本地网络内的设备通话。 – dagnytaggart
非常详细的问题,但你真的开始音频会议?还要确保你没有超过500个wifi点(如果你知道我的意思:),那么连接将会不稳定。 –
@A-Live,是的,这在上面第一个注释中提到的“已经实施的东西”一节中提到。 – dagnytaggart
如果您需要为AudioQueue打开新的网络流,您是否在执行后台任务? –