使用AVPlayer的Airplay并不总是有效';iPhone';在Airplay菜单中列出两次的选项
上面是我试图设置适当会话以启用Airplay的代码。它有时会工作,但不管它是否工作,它通常会在Airplay菜单中列出“iPhone”两次,有时不会显示实际的Airplay设备。点击这两个重复选项中的任何一个似乎都没有任何作用。状态栏上的播放图标有时会出现,有时不会。我猜每次会议都没有安排好使用AVPlayer的Airplay并不总是有效';iPhone';在Airplay菜单中列出两次的选项,iphone,xcode,ios6,avplayer,airplay,Iphone,Xcode,Ios6,Avplayer,Airplay,上面是我试图设置适当会话以启用Airplay的代码。它有时会工作,但不管它是否工作,它通常会在Airplay菜单中列出“iPhone”两次,有时不会显示实际的Airplay设备。点击这两个重复选项中的任何一个似乎都没有任何作用。状态栏上的播放图标有时会出现,有时不会。我猜每次会议都没有安排好 谁能告诉我我做错了什么?!另外,如果我想启用蓝牙播放,是否需要实现其他代理?我今天看到了您的帖子,在这种模式下使用您的代码: 在AppDelegate.M中,请执行以下操作: NSError *sessio
谁能告诉我我做错了什么?!另外,如果我想启用蓝牙播放,是否需要实现其他代理?我今天看到了您的帖子,在这种模式下使用您的代码: 在AppDelegate.M中,请执行以下操作:
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];
在你看来,我用的是:
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];
[[AVAudioSession sharedInstance] setActive:NO error:nil];
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];//this is deprecated in iOS 6.0
成为:
[player setAllowsExternalPlayback:YES];
[player setUsesExternalPlaybackWhileExternalScreenIsActive: YES];
[player setAllowsAirPlayVideo:NO];//this is deprecated in iOS 6.0
在您的info.plist中,允许所需的背景模式a和设置:应用程序播放音频和应用程序与附件通信,然后添加一行并设置:应用程序使用WiFi
就这些;)
PS:你能帮我解决我的问题吗?谢谢。任何帮助都将不胜感激。真的需要这个尽快工作。有专家吗?是的,我已经知道了,应该在这里更新。有趣的是,如果不使用不推荐的方法,我无法让它工作,即使在iOS 6.0上,我看到的是[player setAllowsAirPlayVideo:NO]//这在iOS 6.0中是不推荐的,对吗?PPS如果你想允许你从iOS 6.x及以下版本中使用应用程序,你必须设置信息列表,并且不删除行[player setAllowsAirPlayVideo:NO];因为在iOS 6.0及更高版本上已弃用,但在is 5.x ext上是必需的。
[player setAllowsExternalPlayback:YES];
[player setUsesExternalPlaybackWhileExternalScreenIsActive: YES];