iPhone应用程序允许继续播放背景音乐

joe*_*joe 24 iphone objective-c ios

当我在声音播放时启动我的iPhone游戏时,播放的背景音乐或播客停止播放.我注意到其他游戏允许继续播放背景音频.

这怎么可能?我是否需要覆盖App Delegate中的方法?

Gab*_*lla 59

在使用音频播放器之前application:didFinishLaunchingWithOptions:,请将此行放在您AppDelegate或您的方法中.

 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
Run Code Online (Sandbox Code Playgroud)

根据文档,该AVAudioSessionCategoryAmbient类别是

对于声音播放非主要的应用程序 - 也就是说,您的应用程序可以在声音关闭时成功使用.

此类别也适用于"播放"风格的应用程序,例如用户在iPod音频上播放的虚拟钢琴.使用此类别时,来自其他应用程序的音频会与您的音频混合.屏幕锁定和静音开关(在iPhone上称为Ring/Silent开关)可以使您的音频静音.

如果您还想确保没有发生错误,则必须检查返回值

NSError *error;
BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&error];
if (!success) {
     //Handle error
     NSLog(@"%@", [error localizedDescription]);
} else {
   // Yay! It worked!      
}
Run Code Online (Sandbox Code Playgroud)

最后,请不要忘记将AVFoundation框架链接到您的项目并导入它.

#import <AVFoundation/AVFoundation.h>
Run Code Online (Sandbox Code Playgroud)

  • 我建议也将它放在applicationWillEnterForeground中,否则如果你的应用程序在某个时刻关闭用户的音频并且用户在重新打开你的应用程序时尝试恢复他们的音频,那么用户的音频将不会恢复,其中只有应用程序重启才会重新启动 - 启用设置. (2认同)
  • @vikzilla是的,您可以使用`AVAudioSessionCategoryOptionMixWithOthers`选项启用与其他音频会话的混音 (2认同)