Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AVPlayer的Airplay并不总是有效';iPhone';在Airplay菜单中列出两次的选项_Iphone_Xcode_Ios6_Avplayer_Airplay - Fatal编程技术网

使用AVPlayer的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

上面是我试图设置适当会话以启用Airplay的代码。它有时会工作,但不管它是否工作,它通常会在Airplay菜单中列出“iPhone”两次,有时不会显示实际的Airplay设备。点击这两个重复选项中的任何一个似乎都没有任何作用。状态栏上的播放图标有时会出现,有时不会。我猜每次会议都没有安排好


谁能告诉我我做错了什么?!另外,如果我想启用蓝牙播放,是否需要实现其他代理?

我今天看到了您的帖子,在这种模式下使用您的代码:

在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];