2012-06-05 48 views
0

我在想,如果我在iPhone上有無線電流應用程序,是否有反正我可以讓應用程序在後臺運行時自動切換到新的電臺? 到目前爲止,我聽說蘋果不允許在後臺執行任何操作。只有某些處於特定狀態的事件才能運行,直到這些狀態結束。更改IOS上的背景站

非常感謝您

回答

1

按照iOS Developer Documentation是可能的。

在iOS 4及更高版本中,多任務處理允許應用程序在後臺繼續運行,即使在用戶切換到其他應用程序的同時仍儘可能保留電池使用時間。進入後臺後,大多數應用程序都會立即移至暫停狀態。只有爲用戶提供重要服務的應用才允許繼續運行任何時間。

儘可能地鼓勵您避免在後臺執行並讓您的應用暫停。如果你發現你需要執行後臺任務,下面是適當的時候的一些指導:

你需要實現幾個特定用戶服務中的至少一個。
您需要執行單個有限長度的任務。
當您的應用程序未運行時,您需要使用通知來提醒用戶相關的一些信息。
系統會盡可能長時間地將暫停的應用程序保留在內存中,只有當可用內存量變低時纔會將其刪除。剩餘內存意味着後續啓動應用的速度要快得多。與此同時,被暫停意味着您的應用不會盡快排空設備電池。

然後......

對於需要更多的執行時間來實現的任務,你必須要求特定的權限,以在沒有他們被暫停後臺運行它們。在iOS中,只允許特定類型的應用在後臺運行:

在後臺播放音頻內容給用戶的應用,例如音樂播放器應用 允許用戶隨時瞭解其位置的應用如導航應用
應用,支持互聯網語音協議(VoIP)
報刊雜誌的應用程序,需要下載並處理接收定期更新來自外部配件
應用實現這些服務必須申報新的內容
應用他們支持的服務和使用系統框架來實現這些服務的相關方面。聲明這些服務可讓系統知道您使用的是哪些服務,但在某些情況下,系統框架實際上會阻止您的應用程序被暫停。

而且

支持某些類型的後臺執行的,必須事先通過使用它們的應用程序中聲明。應用程序使用Info.plist文件聲明對服務的支持。將UIBackgroundModes鍵添加到您的信息。plist文件並將其值設置爲包含以下一個或多個字符串的數組:

audio-應用程序在後臺播放可聽內容給用戶。 (此內容包括使用AirPlay播放音頻或視頻內容。) 位置 - 即使應用程序在後臺運行時,該應用程序也會讓用戶瞭解其位置。
voip-該應用程序提供用戶使用Internet連接撥打電話的功能。
報亭內容 - 該應用程序是一個報亭應用程序,可在後臺下載和處理雜誌或報紙內容。
外部附件 - 該應用程序與需要通過外部附件框架定期傳遞更新的硬件附件配合使用。
bluetooth-central-該應用程序與需要通過CoreBluetooth框架定期傳遞更新的藍牙配件一起使用。
每個前面的值都讓系統知道應該在適當的時候喚醒您的應用程序以響應相關事件。例如,開始播放音樂然後移動到背景的應用程序仍然需要執行時間來填充音頻輸出緩衝區。包括音頻密鑰告訴系統框架他們應該繼續播放,並在適當的時間間隔內對應用進行必要的回調。如果應用不包含此密鑰,則應用移動到背景時,應用正在播放的任何音頻均會停止。

而且

一個應用程序,音頻連續播放(即使該應用在後臺運行時)可以通過包括在UIBackgroundModes鍵(與值的音頻),其爲背景音頻的應用程序註冊其Info.plist文件。包含此密鑰的應用必須在後臺播放可聽內容給用戶。

的背景音頻應用的典型例子包括:

音樂播放器應用程序
應用支持音頻或視頻播放上的AirPlay
的VoIP應用
當UIBackgroundModes鍵包含音響值時,系統的媒體框架下自動防止相應應用在移動到後臺時被掛起。只要它播放音頻或視頻內容,應用程序就會繼續在後臺運行。但是,如果應用程序停止播放音頻或視頻,系統將暫停播放。

您可以使用任何系統音頻框架來啓動背景音頻的播放,並且使用這些框架的過程保持不變。 (對於通過AirPlay播放的視頻,您必須使用Media Player框架來呈現您的視頻。)由於您的應用在播放媒體文件時未暫停,因此當您的應用處於後臺時,回調操作正常。不過,在你的回調中,你應該只做必要的工作來提供回放數據。例如,流式音頻應用程序需要從其服務器下載音樂流數據並將當前音頻樣本推出用於回放。您不應執行與播放無關的任何無關任務。

由於多個應用程序可能支持音頻,系統會限制哪些應用程序可以在任何給定時間播放音頻。前臺應用程序始終有權播放音頻。另外,根據其音頻會話對象的配置,還可以允許一個或多個後臺應用播放一些音頻內容。您應該始終配置您的應用程序的音頻會話對象,並仔細處理系統框架以處理中斷和其他類型的音頻相關通知。有關如何爲後臺執行配置音頻會話對象的信息,請參閱音頻會話編程指南。

要閱讀完整的文檔,請轉到答案開頭的鏈接,並轉到標題Background Execution and Multitasking。請記得檢查安裝應用程序的設備是否具有多任務功能;只有iOS4 +設備擁有它。

+0

哦,謝謝。如果回調在後臺正常運行,那麼我有機會。 :) – mrhangz

+0

非常歡迎!假設改變收音機是一件自動的事情,比如改變一首歌曲(在一首歌的結尾處),那麼幾乎所有的音樂應用程序(潘多拉,Spotify,Radio等)都會做你所要求的,所以你不應該有麻煩得到接受。 – citruspi