在带有 iPad 2 或 iPhone 4S 的 iOS 5 上,用户可以使用 Apple TV 和 AirPlay 启用屏幕镜像。如何防止我的应用以这种方式被镜像?有什么方法可以检测到正在发生这种镜像,以便我可以防止我的内容被镜像?
这样做的原因是因为我有法律不允许在电视屏幕上显示的内容。
这是一个非常糟糕的主意,我讨厌它,因为你在抑制你的用户。话虽如此,AirPlay 镜像的工作方式与连接 VGA/HDMI 适配器的方式相同,当您连接适配器时,您可以在“第二台显示器”上显示您想要的任何内容。如果要“阻止”镜像,可以将外部显示器的窗口设置为空白/纯黑色视图。
大多数 iOS 应用程序在其生命周期中只创建和使用一个窗口。此窗口跨越设备的整个主屏幕,并在应用程序生命周期的早期从应用程序的主 nib 文件(或以编程方式创建)加载。但是,如果应用程序支持使用外部显示器进行视频输出,它可以创建一个额外的窗口来在该外部显示器上显示内容。所有其他窗口通常由系统创建,并且通常是为了响应特定事件(例如来电)而创建的。
查看适用于 iOS 的 View Programming Guide,特别是 Windows 部分和在外部显示器上显示内容
只是添加代码来做这个非常简单的工作在这里
if ([[UIScreen screens] count] > 1)
{
UIScreen *secondScreen = [[UIScreen screens] objectAtIndex:1];
CGRect screenBounds = secondScreen.bounds;
UIWindow *secondWindow = [[UIWindow alloc]initWithFrame:screenBounds];
secondWindow.screen = secondScreen;
UIView *anyView= [[UIView alloc]initWithFrame:screenBounds];
anyView.backgroundColor= [UIColor blackColor];
[secondWindow addSubview:anyView];
}