iOS后臺持續播放音樂以及來電打斷等

之前做的app需求后臺播放音樂,并且音樂需要持續播放下去,做這個的時候碰到幾個坑:

1、app進入后臺后音樂播放一段時間后就不再播放了。這時候手機上滑的欄目中也不是當前播放的app,如下圖所示:

解決的方法:播放音頻之前先要設置AVAudioSession模式,通常只用來播放的App可以設為AVAudioSessionCategoryPlayback即可;

2、音樂播放完當前的歌曲后,不再繼續往下播放下一首歌曲

解決方法:在ViewController中的viewWillAppear、viewDidLoad或者applicationDidEnterBackground等地方監聽遠程控制事件,對應的在viewWillDisappear、applicationDidBecomeActive等地方結束遠程控制事件。

```

- (void) viewWillAppear:(BOOL)animated{

[super viewWillAppear:animated];

[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

[self becomeFirstResponder];

}

- (void) viewWillDisappear:(BOOL)animated{

[super viewWillDisappear:animated];

[UIApplication sharedApplication] endReceivingRemoteControlEvents];

[self resignFirstResponder];

}

監聽了這遠程控制后,則需要在ApplicationDelegate中實現遠程控制的事件

- (void)remoteControlReceivedWithEvent:(UIEvent*)receivedEvent {

if(receivedEvent.type==UIEventTypeRemoteControl) {

switch(receivedEvent.subtype) {

caseUIEventSubtypeRemoteControlPlay:

caseUIEventSubtypeRemoteControlPause:

caseUIEventSubtypeRemoteControlTogglePlayPause:

[self.playerControllerplayOrStop];

break;

caseUIEventSubtypeRemoteControlPreviousTrack:

[self.playerControllerskipToPreviousItem];

break;

caseUIEventSubtypeRemoteControlNextTrack:

[self.playerControllerskipToNextItem];

break;

default:

break;

}

}

```

3、評論看到有兄弟問到電話打斷后怎么恢復音樂播放,這里補充一下。另外大家有不懂的或者好的建議都可以在評論上添加,互相學習。

首先初始化AVAudiosession 的時候就添加一個通知監聽 ,

AVAudioSession * audioSession = [AVAudioSession sharedInstance];

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(handleInterruption:)

name:AVAudioSessionInterruptionNotification

object:audioSession]; ?//監聽來電等事件打斷音樂播放,此廣播是系統發出的,監聽即可

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(handleRouteChange:)

name:AVAudioSessionRouteChangeNotification

object:audioSession];//監聽音頻輸出變化事件,插拔耳機、連接藍牙等事件,此廣播是系統發出的,監聽即可

接下來就是實現監聽觸發的方法了

音樂播放被打斷的監聽方法


音樂輸出方式改變的監聽方法


改變的原因
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容