Системный звук становится громче при запуске AVAudioPlayer

Я нашел 1 вопрос на SO по той же проблеме, и он остается без ответа. AVAudioPlayer влияет на системные звуки

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);
}}

ИЗМЕНИТЬ

Только что понял, что если где-то уже проигрывается другой экземпляр AVAudioPlayer, такого поведения не происходит. Это происходит, когда нет активного AVAudioPlayer, и вы воспроизводите системный звук, а затем AVAudioPlayer, и вуаля, этот системный звук, который вы только что воспроизвели, внезапно стал ДЕЙСТВИТЕЛЬНО громким.

Я думаю, что если я не получу ответов, мне просто придется воспроизвести какой-нибудь случайный приглушенный AVAudioPlayer прямо перед воспроизведением системного звука, чтобы этого не произошло, но я надеюсь получить какое-то «настоящее» исправление для этого. Пожалуйста, не предлагайте воспроизводить какой-либо случайный приглушенный AVAudioPlayer прямо перед воспроизведением системного звука, потому что я только что сказал об этом.


person durazno    schedule 25.05.2016    source источник
comment
У вас есть код того, что вы пробовали?   -  person Ro4ch    schedule 02.06.2016
comment
используется ли self.audioPlayer.volume где-либо еще в проекте? или используется self.audioPlayer?   -  person Ro4ch    schedule 02.06.2016
comment
Да, но я не меняю его громкость, но даже если бы я это сделал, это все равно не должно иметь значения, потому что громче становится не AVAudioPlayer, а System Sound. Во всяком случае, нет, я никогда не меняю громкость.   -  person durazno    schedule 03.06.2016