ios 播放音頻 實現長時間后台運行(流氓)


對於ios7,蘋果支持幾種后台運行模式,backgroundTask,voip,后台播放音樂等,具體看官方文檔就好。

我這邊需要在后台跑一個長時間運行的計時器,所以就不能讓app進入suspend狀態。

很早以前聽說可以通過后台播放音樂來實現,借鑒了一下,測試好幾天,找出來了一個還比較靠譜的方案:

首先在

- (void)applicationDidEnterBackground:(UIApplication *)application{

}

里面申請backgroundTask

[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]

實現一個可以運行幾分鍾的權限。

然后寫一個計時器實時檢測 backgroundTimeRemaining

- (void)tik{

    if ([[UIApplication sharedApplication] backgroundTimeRemaining] < 61.0) {

       [[CKAudioTool sharedInstance] playSound];

        [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];

    }

}

 [[CKAudioTool sharedInstance] playSound];這段代碼是去播放了一個無聲的音樂,很關鍵的一點是

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&error]

這樣后台播放就不會影響到別的程序播放音樂了。

我這個計時器每分鍾運行一次tik函數,如果發現后台運行時間小於一分鍾了,就再去申請一個backgroundTask。

神奇的地方在於:backgroundTask不能在程序已經進入后台的時候申請,可以用一個播放音樂的假前台狀態去申請,所以可以做到不斷申請到權限,也就完成了長時間后台執行。

應用實例“同學鬧鍾”。(這都能通過蘋果審核???)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM