2012-01-13 78 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