私は( iOSドキュメントのリスト7-9を参照)、オーディオルートのオーバーライドに関する上記の提案された解決策は、イヤホンを接続して取り外した後、機能しなくなることを発見しました。
したがって、オーディオルートの変更を現在のオーディオセッション(iOSドキュメントのリスト7-10 )で永続的にしたい場合は、代わりに次を使用してデフォルトのオーディオルートを設定できます。
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>