【问题标题】:How to disable screen Recording in iOS app如何在 iOS 应用中禁用屏幕录制
【发布时间】:2019-05-21 16:08:32
【问题描述】:

有什么方法可以禁用屏幕录制?还是可以通过配置文件?或任何第三方库可用?

【问题讨论】:

  • @PyaePhyoeShein 不使用 blockView 任何解决方案?..
  • self.view.backgroundColor = UIColor.red 或者别的怎么样?
  • 不会中断我的应用用户体验。只有我的应用可以避免录屏??。
  • 显示带有警告的覆盖弹出窗口是最好的。

标签: ios uiwindow uiscreen


【解决方案1】:
sharedRecorder.stopRecording( handler: { previewViewController, error in    
    if let error = error {
        print("\(error.localizedDescription)")
    }
    if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad {
        previewViewController?.modalPresentationStyle = UIModalPresentationStyle.popover
        previewViewController?.popoverPresentationController?.sourceRect = CGRect.zero
        previewViewController?.popoverPresentationController?.sourceView = self.view
    }
    if previewViewController != nil {
        self.previewViewController = previewViewController
        previewViewController?.previewControllerDelegate = self
    }
    self.present(previewViewController!, animated: true, completion: nil)
    })
    return
}



https://developer.apple.com/documentation/replaykit/rpscreenrecorder/1620990-stoprecording

【讨论】:

    【解决方案2】:
    NotificationCenter.default.addObserver(self, selector: #selector(preventScreenRecording), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil)
    

    并在主视图中创建一个视图并防止这样。

    (void) preventScreenRecording {
    if (@available(iOS 11.0, *)) {
        BOOL isCaptured = [[UIScreen mainScreen] isCaptured];
    
        if (isCaptured) {
            self.blockView.hidden = false;
        }
        else {
            self.blockView.hidden = true;
        }
    }
    

    【讨论】:

    • 你能在这里解释一下什么是blockView吗?我相信这个方法是在截屏后调用的。我还没有测试过
    • @PPShein 有什么方法可以禁用屏幕截图吗?
    • @NightFury blockView 是您要禁用 screenRecording 的区域。
    • @SagarDaundkar 我想这和我提到的一样。
    • 你能写成完整的代码吗?谢谢
    【解决方案3】:

    当您的应用启动时,您可以测试UIScreen.isCaptured 属性,如果设置为true,则显示一些初始屏幕。

    您还应该观察(在某个地方订阅)capturedDidChangeNotificationnotification,如果UIScreen.isCaptured 设置为true,请执行相同的操作(显示初始屏幕)。

    【讨论】:

    • 我能够使用 UIScreen.isCaptured 检测屏幕重新编码。如何在我的应用程序中避免屏幕重新编码,而不会中断我的应用程序的用户体验。
    猜你喜欢
    • 2018-03-02
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2020-04-15
    • 2019-03-17
    相关资源
    最近更新 更多