要看AVAudioSession底層API解釋的可以看我另一篇文章AVAudioSession。
這篇文章主要記載我使用音頻功能期間的小結(jié):
1、音頻如果需要后臺錄制或者播放功能需要勾選BackgroundMode中的第一項

2、info中要添加隱私權(quán)限獲取key:
Privacy - Microphone Usage Description ? ? ? ? ? ? ? ? ? ? ? ? ?麥克風權(quán)限
3、通過AVAuthorizationStatus類獲取麥克風或攝像頭的授權(quán)狀態(tài),若未授權(quán)可以使用requestAccessForMediaType:方法向用戶請求設(shè)備權(quán)限。
4、獲得用戶授權(quán)后,設(shè)置AVAudioSession:
? ? ? ? 1)當前audioSession處于active時,其他active狀態(tài)下的audioSession中斷;當前audioSession解除active時,其他audioSession不恢復。
? ? [audioSession setActive:YES error:nil];
? ? ? ? 2)當前audioSession處于active時,其他active狀態(tài)下的audioSession中斷;當前audioSession解除active時,其他audioSession中斷結(jié)束。
? ? [audioSession setActive:YES ?withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
5、根據(jù)需求設(shè)置AVAudioSession的category、mode、option(AVAudioSession)
當設(shè)備有多個外接音頻設(shè)備時,AVAudioSession將遵循last-in wins的原則來選擇外接設(shè)備,即音頻將導向最終的外接設(shè)備。
當沒有外接音頻設(shè)備時,音頻默認從內(nèi)置揚聲器播放,但category為AVAudioSessionCategoryPlayAndRecord時,聽筒為默認輸出設(shè)備。
在AVAudioSessionCategoryPlayAndRecord情況下,如果想更改默認輸出設(shè)備,可以通過提供MPVolumeView讓用戶切換輸出設(shè)備;或者通過調(diào)用overrideOutputAudioPort:方法來使用AVAudioSessionPortOverrideSpeaker切換到揚聲器,也可以通過修改CategoryOption為AVAudioSessionCategoryOptionDefaultToSpeaker。
[audioSession?overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
[audioSession setCategory:AVAudioSessionCategorySoloAmbient withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];