使用AVAudioSession AVAudioSessionCategoryPlayAndRecord静音所有推送通知声音和振动.即使应用程序在后台

Fra*_*gle 8 iphone audio audio-recording ios avaudiosession

我正在开发一个应用程序,可以在应用程序处于前台和后台时进行一些录制.这是有效的.但是,我注意到,当我的音频会话(见下文)处于活动状态时,"系统"听起来像是推送通知警报声以及振动被静音.即使应用程序在后台也是如此.

结果是我停止获取标准内容(如短信)的通知声音/氛围,而我的应用程序在后台并且录制已开启.

音频会话设置如下:

 AVAudioSession* session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&error];
Run Code Online (Sandbox Code Playgroud)

显然那些声音/振动是不可混合的,所以我猜他们会变得柔和.

有没有办法解决这个问题(同时仍保持录音有效)?如何录制并仍然让用户获得推送通知声音和振动?

anc*_*jic 1

你可以试试这个:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
                                 withOptions:(AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionDuckOthers)
                                       error:nil];
Run Code Online (Sandbox Code Playgroud)

另外,您可以尝试使用以下方法停用音频会话:

[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
Run Code Online (Sandbox Code Playgroud)

然后重新激活它:

[[AVAudioSession sharedInstance] setActive:YES error:nil];
Run Code Online (Sandbox Code Playgroud)