Я обнаружил (см. Листинг 7-9 в документации iOS ), что предложенное выше решение по переопределению звукового маршрута перестает работать после подключения и удаления наушников.
Таким образом, если вы хотите, чтобы изменение аудио-маршрута было постоянным в текущем аудио-сеансе (листинг 7-10 в документации iOS ) того же источника, вы можете установить аудио-маршрут по умолчанию, вместо этого используя
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
//Set the general audio session category
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: &setCategoryErr];
//Make the default sound route for the session be to use the speaker
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (doChangeDefaultRoute), &doChangeDefaultRoute);
//Activate the customized audio session
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
и, конечно, убедитесь, что связали каркас AudioToolbox и импортировали его, используя
#import <AudioToolbox/AudioServices.h>