iOS後臺持續播放音樂 中斷後持續播放
阿新 • • 發佈:2019-02-05
-(void)applicationWillResignActive:(UIApplication )application { //開啟後臺處理多媒體事件 [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; AVAudioSession session=[AVAudioSession sharedInstance]; [session setActive:YES error:nil]; //後臺播放 [session setCategory:AVAudioSessionCategoryPlayback error:nil]; //這樣做,可以在按home鍵進入後臺後 ,播放一段時間,幾分鐘吧。但是不能持續播放網路歌曲,若需要持續播放網路歌曲,還需要申請後臺任務id,具體做法是: _bgTaskId=[AppDelegate backgroundPlayerID:_bgTaskId]; //其中的_bgTaskId是後臺任務UIBackgroundTaskIdentifier _bgTaskId; } 實現一下backgroundPlayerID:這個方法: +(UIBackgroundTaskIdentifier)backgroundPlayerID:(UIBackgroundTaskIdentifier)backTaskId { //設定並激活音訊會話類別 AVAudioSession *session=[AVAudioSession sharedInstance]; [session setCategory:AVAudioSessionCategoryPlayback error:nil]; [session setActive:YES error:nil]; //允許應用程式接收遠端控制 [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; //設定後臺任務ID UIBackgroundTaskIdentifier newTaskId=UIBackgroundTaskInvalid; newTaskId=[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]; if(newTaskId!=UIBackgroundTaskInvalid&&backTaskId!=UIBackgroundTaskInvalid) { [[UIApplication sharedApplication] endBackgroundTask:backTaskId]; } return newTaskId; }
3.處理中斷事件,如電話,微信語音等。
原理是,在音樂播放被中斷時,暫停播放,在中斷完成後,開始播放。具體做法是:
-->在通知中心註冊一個事件中斷的通知: //處理中斷事件的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleInterreption:) name:AVAudioSessionInterruptionNotification object:[AVAudioSession sharedInstance]]; -->實現接收到中斷通知時的方法 //處理中斷事件 -(void)handleInterreption:(NSNotification *)sender { if(_played) { [self.playView.player pause]; _played=NO; } else { [self.playView.player play]; _played=YES; } }