NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
//Direct audio to speakers when there is no headphone
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[player setAllowsExternalPlayback:YES];
[player setUsesExternalPlaybackWhileExternalScreenIsActive: YES];
[player setAllowsAirPlayVideo:NO];
上記は、適切なセッションを設定して Airplay を有効にしようとする私のコードです。動作する場合もありますが、動作するかどうかに関係なく、通常はAirplay メニューに「iPhone」が 2 回表示され、実際の Airplay デバイスが表示されないことがあります。これら 2 つの重複するオプションのいずれかをタップしても、何も起こらないようです。また、ステータスバーの再生アイコンが表示される場合と表示されない場合があります。セッションが毎回適切に設定されていないと推測しています。
ここで私が間違っていることを誰か親切に教えてもらえますか?! また、Bluetooth での再生を有効にしたい場合、他のデリゲートを実装する必要がありますか?