1. 前言
1.1 ?AVAudioSession的類別
–混音播放,例如雨聲、汽車引擎等,可與其他音樂一起播放
–後台播放,其他音樂將被停止
–獨占音樂播放
–錄制音頻
–播放和錄制音頻
–使用硬件解碼器處理音頻,該音頻會話使用期間,不能播放或錄音
圖解:
2. 後台播放音樂
2.1 ?設置後台任務
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16+?(UIBackgroundTaskIdentifier)backgroundPlayerID:(UIBackgroundTaskIdentifier)backTaskId
{
????
//?1.?設置並激活音頻會話類別
???????AVAudioSession?*session?=?[AVAudioSession?sharedInstance];
????[session?AVAudioSessionCategoryPlayback?error:nil];
????[session?setActive:YES?error:nil];
????
//?2.?允許應用程序接收遠程控制
????[[UIApplication?sharedApplication]?beginReceivingRemoteControlEvents];
????
//?3.?設置後台任務ID
??????UIBackgroundTaskIdentifier?newTaskId?=?UIBackgroundTaskInvalid;
????newTaskId?=?[[UIApplication?sharedApplication]?beginBackgroundTaskWithExpirationHandler:nil];
????
if
?(newTaskId?!=?UIBackgroundTaskInvalid?&&?backTaskId?!=?UIBackgroundTaskInvalid)?{
????????[[UIApplication?sharedApplication]?endBackgroundTask:backTaskId];
????}
????
return
?newTaskId;
}
2.2 ?設置後台播放
1 2 3 4 5 6 7//後台播放音頻設置?
AVAudioSession?*session?=?[AVAudioSession?sharedInstance];???
[session?setActive:YES?error:nil];???
[session?setCategory:AVAudioSessionCategoryPlayback?error:nil];??
???
//讓app支持接受遠程控制事件?
[[UIApplication?sharedApplication]?beginReceivingRemoteControlEvents];
2.3 ?記錄後台播放代號
1 2 3 4 5//?後台播放任務Id
UIBackgroundTaskIdentifier??_bgTaskId;
?
//?設置音頻會話,允許後台播放
_bgTaskId?=?[SoundTool?backgroundPlayerID:_bgTaskId];