好的,所以我在应用程序的plist中指定了一个UIRequiresPersistentWiFi键到YES,这样当我的应用程序处于后台时,iOS就不会停止获取数据。
然而,当用户使用蜂窝连接(而不是wifi)而我的应用程序处于后台时,几分钟后就会停止数据下载。
我检查了两遍文档,似乎没有可以设置的蜂窝网络的UIRequiresPersistentWiFi。
有什么办法可以让我的连接通过蜂窝网络生存,而应用程序是在后台?有什么暗示吗?
干杯!
更新:
我正在制作一个网络无线电应用程序。流与我一个接一个请求的mp3s结合在一起(不能提前请求,不能更改服务器端)。当我的应用程序在后台使用wifi时,它就能工作了。然而,在使用蜂窝连接时,在后台花费一段时间之后,网络请求不会被执行。没有改变战略的余地。该应用程序在AppStore中,它以前也能工作过。我猜他们在新版本的系统中改变了一些东西。
更重要的是我不需要节流。我的无线电应用程序已经被批准,并且在AppStore中。流以128 is /s(即最大值)发送,因此没有问题。看起来,在后台一段时间后,系统就会沉默我的网络请求(在蜂窝网络上)。但是,只有当我试图在后台启动连接时,才会发生这种情况。
描述:
*在使用WiFi时工作。
发布于 2012-01-19 18:24:42
我很确定细胞网络中没有这样的东西。以下是我的推理:
如果苹果允许你在wifi范围之外不断地连接网络,那么用户的服务成本就会飙升,他们也不会知道原因。如果苹果赋予程序员这种能力,就会有人滥用它。所以,我相信苹果不会允许你这么做的。
当你的应用程序处于后台时,你为什么需要一个固定的互联网连接(除非,我猜,你是在制作一个网络无线电应用)?请记住,在后台,您的应用程序可以在任何时候被终止,无需任何警告。如果你找不到这样的方法,你可能想重新考虑一下你的策略。:/
发布于 2012-01-19 18:40:44
我认为没有类似于UIRequiresPersistentWiFi
的东西,原因可能包括Tusting2121指出的原因。
但请注意,UIRequiresPersistentWiFi
与节能相关。wifi模块消耗能量,因此通常在一段时间后关闭它以节省一些能源,除非设置了UIRequiresPersistentWiFi
。我相信,这种疯狂的储蓄在细胞情况下是不可能的。
事实上,在移动模式下的某些分钟后,你的连接就消失了,这可能是因为你声称的无线节能机制的复制完全不同。例如,参见这篇文章,这意味着您有义务控制您的3G数据流。
发布于 2012-01-23 06:20:15
将audio
添加到Info.plist
中的UIBackgroundModes
条目中。
根据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:
定期调用处理程序来填充数据流。
https://stackoverflow.com/questions/8850551
复制相似问题