好的,所以我将我的应用程序的plist的 UIRequiresPersistentWiFi 键指定为 YES ,这样当我的应用程序在后台时,iOS将不会停止提取数据。< / p>
然而,当用户使用蜂窝连接(不是wifi)并且我的应用程序在后台时,数据下载会在几分钟后停止。
我仔细检查了文档,似乎没有相当于我可以设置的蜂窝网络的 UIRequiresPersistentWiFi 。
有什么方法可以让应用程序在后台通过蜂窝网络连接吗?任何提示?
干杯!
更新
我正在制作一个互联网广播应用。流与我一个接一个请求的mp3组合(不能提前请求它们,不能改变服务器端)。它适用于我的应用程序在后台并使用wifi。但是,在使用蜂窝连接时,在后台花费一些时间后不会执行网络请求。没有地方可以改变策略。该应用程序位于AppStore中,之前已经运行过。我猜他们在新版本的系统中改变了一些东西。
更重要的是,我不需要节流。我的广播应用程序已经被批准并且在AppStore中。流以128kb / s(即最大值)发送,因此这不是问题。看起来系统在后台运行一段时间后会使我的网络请求(在蜂窝网络上)无声。但是,这只有在我尝试在后台启动连接时才会发生。
说明
*使用WiFi时可以使用。
答案 0 :(得分:11)
我很确定Cell网络没有这样的东西。这是我的理由:
如果Apple允许您在wifi范围之外持续连接到网络,那么用户的服务成本就会飙升,他们也不会知道原因。如果Apple给程序员这种能力,那么有人会滥用它。所以,我确信Apple不会允许你这样做。
为什么当你的应用程序在后台时,你需要一个持续的互联网连接(除非,我猜你正在制作互联网广播应用程序)?请注意,在后台运行时,您的应用可以随时终止而不会发出警告。如果您找不到办法,可能需要重新考虑您的策略。 :/
答案 1 :(得分:1)
我认为没有相应的UIRequiresPersistentWiFi
,原因可能包括Tusting2121指出的原因。
但请注意UIRequiresPersistentWiFi
与节能有关。 wifi模块消耗能量,因此通常在一段时间后关闭以节省一些能量,除非设置UIRequiresPersistentWiFi
。
我相信,这种节约能源的情况并非如此。
在蜂窝模式下,您的连接在一定时间后消失的事实可能是由您声称的无线节能机制副本完全不同的原因引起的。例如,请参阅this article,这表明您必须限制3G数据流。
答案 2 :(得分:1)
将audio
添加到UIBackgroundModes
中的Info.plist
条目。
根据Apple文档:In your callbacks, though, you should do only the work necessary to provide data for playback. For example, a streaming audio app would need to download the music stream data from its server and push the current audio samples out for playback. You should not perform any extraneous tasks that are unrelated to playback.
您也可以从voip
条目中获得一些价值 - 您可以setKeepAliveTimeout:handler:
定期调用您的处理程序来填充数据流。