如何在iOS中使用AirPlay从应用程序(而不是从控制中心)进行屏幕镜像?

17
我正在使用MPVolumeView来显示AirPlay按钮。我需要通过音频镜像向Apple TV显示自定义壁纸。 音频在Apple TV上正常播放,但壁纸图片不显示。 我正在使用AVAudioController播放音频。 我已经检查了YouTube应用程序,在该应用程序中,从应用程序进行屏幕镜像以播放视频。是否可以使用AVAudioController在应用程序内进行屏幕镜像?请帮助我解决这个问题。提前感谢您的帮助。

术语上有些混淆。当用户使用系统控件选择Airplay输出设备时,镜像会自动发生。AirPlay镜像会在远程显示器上显示与设备上完全相同的内容。 - Leon Deriglazov
@LeontyDeriglazov 我们可以向外部设备和我们的 iPhone 显示不同的视图。但是我无法从我的应用程序中执行此操作,而我可以从 iOS 控制面板中执行此操作。 - Mukesh2421
我看过YouTube应用和照片(iOS原生应用)。我们可以从应用程序启用屏幕镜像。我该如何做到这一点? - Mukesh2421
YouTube 播放视频,而 Apple 通过 MPVolumeView 支持此用例(请参考此答案:https://dev59.com/NG025IYBdhLWcg3w6KSO)。 - Leon Deriglazov
正如你所猜测的那样,苹果并不总是遵守其应用商店规则来管理他们的应用程序。使用任何公共方法,你很可能无法获得与AirPlay相同的控制水平。 - Leon Deriglazov
4个回答

1
很遗憾,与AirPlay相关的外部显示器仅在您在控制面板中启用AirPlay镜像时才会变为活动状态(并发布相应通知)。目前似乎无法通过编程方式启用镜像
MPVolumeView可以帮助用户将音频重定向到AirPlay扬声器,但它与显示镜像无关。

0

您可以使用AVPlayer属性在应用程序内进行屏幕镜像。

该属性为

@property (nonatomic) BOOL usesAirPlayVideoWhileAirPlayScreenIsActive NS_DEPRECATED_IOS(5_0, 6_0);

或者

@property (nonatomic) BOOL usesExternalPlaybackWhileExternalScreenIsActive NS_AVAILABLE_IOS(6_0);.

usesAirPlayVideoWhileAirPlayScreenIsActiveusesExternalPlaybackWhileExternalScreenIsActive的默认值均为NO。

如果allowsAirPlayVideo为NO,则usesAirPlayVideoWhileAirPlayScreenIsActive无效。

如果allowsExternalPlayback为NO,则usesExternalPlaybackWhileExternalScreenIsActive无效。


0
你需要监听屏幕连接/断开的通知。
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];

[center addObserver:self selector:@selector(handleScreenDidConnectNotification:)
               name:UIScreenDidConnectNotification object:nil];
[center addObserver:self selector:@selector(handleScreenDidDisconnectNotification:)
               name:UIScreenDidDisconnectNotification object:nil];

在名为UIScreenDidConnectNotification的通知中,您将看到您的设备现在有两个屏幕,您可以进行设置。

0

感谢您的回复@plu。我已经为第二个屏幕创建了用户界面。如果我从控制面板打开屏幕镜像,它可以正常工作。但是当我在我的应用程序中点击可用屏幕中的Apple TV时,它无法正常工作。我正在使用MPVolumeView显示可用屏幕。 - Mukesh2421

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接