iOS 7以降で廃止されたAudioSessionSetPropertyでは、AVFoundationAVAudioSessionを使用する必要があります。目的のアクションは、ユーザーアクションがスピーカーを通過するルートをオーバーライドできるようにすることであるため、AVAudioSessionPortOverrideSpeakerとAVAudioSessionCategoryOptionDefaultToSpeakerの違いを検討することができます。
テクニカルブリテンQ&A QA1754によると、「AVAudioSessionCategoryOptionDefaultToSpeakerを使用すると、ユーザージェスチャが尊重されます。たとえば、ヘッドセットを接続すると、ルートがヘッドセットマイク/ヘッドフォンに変更され、ヘッドセットを取り外すと、ルートが組み込みに変更されます。マイク/スピーカー」。
テクニカルブリテンでは、AVAudioSessionPortOverrideSpeakerは、たとえばスピーカーフォンボタンでの使用に適していると説明されていますが、これは元の投稿で求められていたものではないことに注意してください。
https://developer.apple.com/library/ios/qa/qa1754/_index.html
プレーヤーを呼び出す前に、次のように自分の実装が呼び出されます。
NSError *error;
AVAudioSession* audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:&error];
// handle any error
// initiate the player or recorder
[_player play];
また、この質問は、別の関連する投稿で取り上げられている質問と似ています。
ここで参照されている同じ技術情報によると、「overrideOutputAudioPortの使用を考えてください:スピーカー(AVAudioSessionPortOverrideSpeaker)と通常の出力ルート(AVAudioSessionPortOverrideNone)を切り替えることができるスピーカーフォンボタンを実装するために使用できるものに関して。 「」
スピーカーオーバーライドoverrideOutputPortカテゴリの実装を探している場合は、その投稿を参照してください:
AudioSessionSetPropertyを使用せずにオーディオをスピーカーにルーティングするにはどうすればよいですか?