【问题标题】:Block AirPlay Mirroring on iOS 5在 iOS 5 上阻止 AirPlay 镜像
【发布时间】:2012-01-15 10:42:15
【问题描述】:

在装有 iPad 2 或 iPhone 4S 的 iOS 5 上,用户可以通过 Apple TV 和 AirPlay 启用屏幕镜像。如何防止我的应用以这种方式被镜像?有什么方法可以检测到正在发生这种镜像,以便我可以防止我的内容被镜像?

这样做的原因是因为我有法律不允许在电视屏幕上显示的内容。

【问题讨论】:

  • @CarlVeazey 在这种情况下,我的回答如下,我建议显示一条消息,说明镜像“不起作用”的原因。

标签: iphone ios ipad airplay apple-tv


【解决方案1】:

这是一个非常糟糕的主意,我讨厌它,因为你在抑制你的用户。话虽如此,AirPlay 镜像的工作方式与连接 VGA/HDMI 适配器的方式相同,当您连接适配器时,您可以在“第二台显示器”上显示您想要的任何内容。如果要“阻止”镜像,可以将外部显示器的窗口设置为空白/纯黑色视图。

大多数 iOS 应用程序在其生命周期中只创建和使用一个窗口。此窗口跨越设备的整个主屏幕,并在应用程序生命周期的早期从应用程序的主 nib 文件(或以编程方式创建)加载。但是,如果应用程序支持使用外部显示器进行视频输出,它可以创建一个额外的窗口来在该外部显示器上显示内容。所有其他窗口通常由系统创建,并且通常是为了响应特定事件(例如来电)而创建的。

查看View Programming Guide for iOS,特别是Windows 部分和Displaying Content on an External Display

【讨论】:

  • 谢谢克里斯。根据您的建议,我已经能够实现我的目标。
  • @Chris 不一定是“非常糟糕的主意”。我现在正在开发一个应用程序,有充分的理由禁用镜像。
  • 总有一些商业原因是有意义的,当功能被削弱时,它只是从用户的角度来看很糟糕。
  • 嗨@ChrisWagner,Kev,Carl,我也有同样的要求。你能分享一下代码吗?检查这个:stackoverflow.com/questions/11591928/… 但这个解决方案一般对我不起作用
  • 对不起,我没有这方面的代码示例。如果您编写的某些代码有问题,您可能需要针对您的代码提出一个新问题,以便有人可以帮助您解决问题。
【解决方案2】:

只需在此处添加执行此非常简单工作的代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多