无法使用 airplay (Apple TV) 将自定义视图推送到外部显示器

Posted

技术标签:

【中文标题】无法使用 airplay (Apple TV) 将自定义视图推送到外部显示器【英文标题】:Not able to push a custom view to external display using airplay (Apple TV) 【发布时间】:2014-06-03 23:25:14 【问题描述】:

尝试在使用 Airplay 连接到 Apple tv 的外部显示器上显示自定义屏幕。我们还尝试在配对后通过 AppleTV 流式传输音频。 (音频在这里是可选的,最好有但不是必需的)。

问题是,如果我们进行音频播放(使用 AVAudioPlayer),它可以正常工作,但无法显示自定义屏幕。另一方面,从控制中心选择它可以正常工作,只是我们不想镜像屏幕,我们想显示自定义视图。

非常感谢这方面的任何帮助。

在 Dropbox 中上传了 AirPlay 问题的示例代码 - https://dl.dropboxusercontent.com/u/1307156/AirplayDemo.zip

【问题讨论】:

【参考方案1】:

你想要做的其实很简单: 添加外部屏幕后,您可以创建一个新的UIWindow,一个新的UIViewController,它将控制您在外部屏幕上显示的自定义视图,并将刚刚创建的窗口设置为外部UIScreen

// new window binding
newWindow.screen = externalScreen;
[newWindow makeKeyAndVisible];

您可以通过NSNotificationCenter 观察外部屏幕的变化(添加、删除屏幕、更改屏幕模式),并根据您的目的进行相应的操作。

【讨论】:

唯一的事情是我需要使用镜像来使它工作。有什么方法可以在应用程序中做到这一点? 不,没有办法。 Apple 不允许开发人员以编程方式启用屏幕镜像。即,只要用户通过控制中心决定这样做,屏幕镜像就会开始。有一些 hacky 解决方案不能解决主要问题...我偶然发现了这个 one,但其中引用的 ios-runtime-headers 显然没有解决问题。另外,这将是苹果永远不会批准的解决方案。 :)

以上是关于无法使用 airplay (Apple TV) 将自定义视图推送到外部显示器的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 iOS 4.3 中使用 AirPlay 将静止图像发送到 Apple TV

新 Apple TV(第 3 代)上的 Airplay,第二个屏幕不是 1080p

如何禁用暂停/播放通过 Airplay 连接到 Apple TV 的 AVPlayer 的功能

Airplay:从 MPMoviePlayerController 播放电影只会导致音频流式传输到 Apple tv

如何在airplay中区分apple tv和其他设备?

由于 tvOS 10.2 Apple TV 显示 Airplay 连接需要 iOS 7.1 或更高版本错误