我在SO上发现了一个关于同一问题的问题,但仍然没有答案 . AVAudioPlayer affects system sounds

AVAudioSessionCategoryAmbient不是答案,因为它只允许应用程序与其他应用程序的音频同时播放音频,不是这样 .

我使用SystemSound播放按钮点击声音等声音效果,使用AVAudioPlayer播放背景音乐 . 当AVAudioPlayer在播放SystemSound时启动时,该特定系统声音突然变得大5倍 . 还有其他人经历过吗?可能有什么问题?

这些是在SoundControl.m中,我在转换后正在玩gameBG .

-(void)gameBG {

self.sharedSoundControl = [SoundControl sharedSoundControl];
if (self.sharedSoundControl.musicOff == NO) {
    self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"bgm" withExtension:@"mp3"] error:nil];
    self.audioPlayer.numberOfLoops = -1;
    self.audioPlayer.volume = 0.3f;
        [self.audioPlayer play];
}}

-(void)transition {

if (self.sharedSoundControl.effectOff == NO) {

NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"transition" ofType:@"caf"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:soundPath], &soundID);
AudioServicesPlaySystemSound(soundID);
}}

EDIT

刚刚意识到如果AVAudioPlayer的另一个实例已经在任何地方播放,则不会发生这种行为 . 它发生在没有活动的AVAudioPlayer并且你播放系统声音然后AVAudioPlayer然后瞧,你刚刚播放的系统声音突然变得非常响亮 .

我在想,如果我没有得到答案,我就必须在播放系统声音之前播放一些随机静音的AVAudioPlayer,这样就不会发生但是我希望得到一些“真正的”修复 . 请不要建议在播放系统声音之前播放一些随机的静音AVAudioPlayer,因为这就是我刚才所说的..