iOS 11防止像Netflix一样的屏幕记录

时间:2017-09-20 10:29:54

标签: iphone xcode cocoa-touch ios11 screen-recording

我在我的应用程序中播放视频,我不想录制。 Netflix 应用程序所做的是,在录制屏幕时,他们会让音频捕获而不是视频。

任何人都知道如何实现此功能?

4 个答案:

答案 0 :(得分:3)

您可以收听UIScreenCapturedDidChange通知。

NotificationCenter.default.addObserver(self, selector: #selector(screenCaptureChanged), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil)

当iOS 11屏幕录制开始和结束时调用此方法。当用户录制屏幕时,您可以修改用户界面以阻止您不想录制的任何内容。

UIScreen isCaptured属性更改时会触发此通知。您也可以自己检查这个属性:

UIScreen.main.isCaptured

答案 1 :(得分:0)

我创建了一个黑色视图并将其添加到UIWindow的顶部。然后,在PlayerVideo的视图控制器中,创建观察者

NotificationCenter.default.addObserver(self, selector: #selector(screenCaptureChanged), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil)

然后,在screenCaptureChanged

(void) screenCaptureChanged {
if (@available(iOS 11.0, *)) {
    BOOL isCaptured = [[UIScreen mainScreen] isCaptured];

    if (isCaptured) {
        self.blackView.hidden = false;
    }
    else {
        self.blackView.hidden = true;
    }
}

}

此解决方案将在用户录制时阻止PlayerVideo。但是,我想创建类似Netflix的东西。我想让用户在看电影时做他们想做的事。如果他们正在录制,他们可以继续观看没有黑视图的视频。但是,当他们停止录制时,视频将以黑色视图保存。我还在弄清楚Netflix是怎么做到的。

答案 2 :(得分:0)

Netflix解决方案与代码无关。它称为DRM或数字版权管理。它可以保护数据免遭任何盗版。包括屏幕记录/快照和下载。伙计,那很贵。

答案 3 :(得分:0)

我相信,Netflix可以利用Apple提供的“ FairPlay Streaming”技术。根据{{​​3}}

  

如果您的应用程序使用FairPlay Streaming(FPS),则您的视频内容   将不会自动被iOS 11屏幕录像捕获   功能或Mac OS上的QuickTime Player。您的应用程序的一部分   正在播放的内容将被涂黑。

     

注意:FairPlay流式传输只会为视频提供保护   您内容的一部分。为了防止捕获音频部分,您需要   仍应使用本文档中讨论的UIScreen API来   如果屏幕捕获开始,则向用户提供适当的消息。

可以从下面的链接深入了解FPS:

Apple Documentation

任何应用程序都可以结合FPS,以获得与Netflix相同的结果。