Это немного устарело, но это сообщение помогло мне, и я хотел обновить его для всех, кому это может понадобиться в будущем. Код, размещенный в верхней части, верен - звук будет воспроизводиться через громкоговоритель телефона и направит его на громкоговоритель внизу. В коде есть незначительная опечатка, поэтому он дает ошибки. Вот правильный фрагмент кода, который позволит решить эту проблему:
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
Убедитесь, что вы также активировать аудио сессии сразу же после установки этого, перед созданием аудио плеер/рекордер:
[[AVAudioSession sharedInstance] setActive:YES error:nil];
последнее, если вы Вы будете играть и записывать одновременно, вам, вероятно, также потребуется установить категорию и функции микширования. Вот весь фрагмент, который установит категорию, включит микширование, проецирует звук на основной громкоговоритель и активирует сеанс. Вы захотите сделать это только один раз сразу после запуска приложения.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
OSStatus propertySetError = 0;
UInt32 allowMixing = true;
propertySetError = AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixing), &allowMixing);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
NSLog(@"Mixing: %x", propertySetError); // This should be 0 or there was an issue somewhere
[[AVAudioSession sharedInstance] setActive:YES error:nil];
Надеюсь, что кто-то поможет!
Да, это необходимо, но я получил его. Без изменений :( Функция сама в порядке, вы можете взорвать микрофон и услышать звук, но только с внутренним динамиком. –