2012-01-13 98 views
6

好了,我指定我的应用程序的plist中的UIRequiresPersistentWiFi关键YES这样的iOS不会停止获取数据时,我的应用程序是在后台。UIRequiresPersistentWiFi相当于蜂窝连接

但是,当用户使用蜂窝连接(而不是wifi),我的应用程序在后台时,数据的下载在几分钟后停止。

我仔细检查了文档,看起来没有相应的UIRequiresPersistentWiFi我可以设置蜂窝网络。

有什么办法可以让我们通过蜂窝网络建立连接,而应用程序在后台?任何提示?

干杯!

更新:

我想提出一个互联网广播应用。流与我一个接一个地请求的mp3(不能提前请求它们,不能改变服务器端)相结合。它适用于我的应用程序在后台并使用WiFi。但是,使用蜂窝连接时,网络请求在后台花费一段时间后不会执行。没有改变战略的地方。该应用程序在AppStore中,它曾经工作过。我想他们在新版本的系统中改变了一些东西。

什么是我不需要节流。我的电台应用程序已经获得批准,并位于AppStore中。流以128kb/s(最大值)发送,所以这不成问题。它看起来像系统在后台的一段时间后沉默我的网络请求(当蜂窝网络时)。但是,只有当我尝试在后台启动连接时才会发生这种情况。

说明:

  1. 应用程序在后台播放MP3数据流传输的蜂窝网络 。
  2. MP3播放结束
  3. 我请求URL到另一个MP3
  4. 不执行请求*。

*使用WiFi时有效。

+0

我不确定这正是你在找什么,但看看那个:http://stackoverflow.com/q/4595638/1047258 – Novarg 2012-01-18 16:20:15

+0

谢谢,但它没有任何关系与我的问题。 – RaffAl 2012-01-19 14:36:51

回答

10

我相当确定没有像Cell这样的网络。这是我的推理:

  • 细胞服务费钱。很多钱。每分钟。相比之下,Wifi服务不需要花费金钱。
  • AT & T没有很多带宽,并且为额外的带宽使用收取额外的用户费用。
  • 苹果是一家希望让用户体验尽可能干净和美观的公司。
  • 当成本过高而没有自己的过错时,用户很生气,他们的体验也不好。

如果Apple允许您在wifi范围之外连接到网络,用户的服务成本将会飞涨,他们也不知道为什么。如果Apple给程序员这个能力,有人会滥用它。所以,我相信苹果不会允许你这样做。

无论如何,当你的应用程序在后台时,为什么你需要一个不断的网络连接(除非,我猜你正在制作一个网络电台应用程序)?请记住,在后台时,您的应用可以随时终止而不会发出警告。如果无法找到解决方法,则可能需要重新考虑策略。 :/

+0

我正在制作一个互联网广播应用程序。流与我一个接一个地请求的mp3(不能提前请求它们)组合。它适用于我的应用程序在后台并使用WiFi。但是,使用蜂窝连接时,网络请求在后台花费一段时间后不会执行。没有改变战略的地方。该应用程序在AppStore中并且工作正常。我想他们在新版本的系统中改变了一些东西。 – RaffAl 2012-01-20 08:39:45

+0

如果我知道,我不会说重新考虑这个策略。至于请求的mp3的东西,我认为你已经试图不断重新传输音频,而不必重新请求音频流?我知道当苹果公司首次提出多任务时,苹果公司正在为后备应用程序耗尽电池而陷入困境。机会是什么改变了苹果的策略,以防止后台应用程序占用电池和带宽(毕竟,更多的电池密集型做一个单元连接比WiFi连接) – Tustin2121 2012-01-23 16:04:06

+0

我的方法以前工作过。我的结论是,苹果已经变得更加严格,并且不允许执行请求,而应用程序在后台使用一段时间并使用蜂窝网络。我尝试了所有我想到的解决方法。他们都没有解决这个问题。 – RaffAl 2012-01-24 10:06:24

1

我认为没有相当于UIRequiresPersistentWiFi,原因可能包括Tusting2121指出的原因。

但请注意,UIRequiresPersistentWiFi与节能连接。 wifi模块消耗能量,因此通常在一段时间后关闭,以节省一些能量,除非设置了UIRequiresPersistentWiFi。 我相信,这种节约能源在细胞情况下并非如此。

事实上,在蜂窝模式中某些分钟后,您的连接消失可能与您声称的无线节能机制副本完全不同。例如见this article这表明你有义务遏制你的3G数据流。

+0

感谢您的建议,但我不需要调节。我的电台应用程序已经获得批准,并位于AppStore中。流以128kb/s(最大值)发送,所以这不成问题。它看起来像系统在后台的一段时间后沉默我的网络请求(当蜂窝网络时)。但是,只有当我尝试在后台启动连接时才会发生这种情况。 – RaffAl 2012-01-20 08:45:21

1

audio加入您的UIBackgroundModes条目Info.plist

根据苹果的文档: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:已经称为定期处理程序来填充你的数据流。

+0

感谢您的答案,但我已经有了UIBackgroundModes条目中的音频键。我也认为我不应该添加voip密钥。这可能会导致应用程序拒绝,因为我的应用程序不使用任何VoIP服务。 – RaffAl 2012-01-23 08:37:23

+1

你排队单独的MP3文件,然后逐一播放它们吗?这可能是因为当你停止播放最后排队的文件时,应用程序被暂停了吗?从文档'但是,如果应用程序停止播放音频或视频,则系统会暂停播放。“您是否停止播放,然后启动下一个文件?有没有办法不断加载你的缓冲区而不是让它流失? – ikuramedia 2012-01-23 10:35:48

+0

否则,我们需要更多详细信息 - 每次在相同的时间段后停止播放?还是相同数量的歌曲?它是在歌曲之间还是在歌曲中间?你如何从网络请求数据?你用什么回调加载下一首曲子?等... – ikuramedia 2012-01-23 10:36:48