如何在 iOS 应用中禁用屏幕录制

Posted

技术标签:

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

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

【问题讨论】:

@PyaePhyoeShein 不使用 blockView 任何解决方案?.. self.view.backgroundColor = UIColor.red 或者别的怎么样? 不会中断我的应用用户体验。只有我的应用可以避免录屏??。 显示带有警告的覆盖弹出窗口是最好的。 【参考方案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 检测屏幕重新编码。如何在我的应用程序中避免屏幕重新编码,而不会中断我的应用程序的用户体验。

以上是关于如何在 iOS 应用中禁用屏幕录制的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 iOS 应用程序的电影播放视图中禁用或检测屏幕录制?

如何在实现屏幕录制时隐藏按钮或 textView

在录制屏幕捕获视频时暂时禁用在输入字段中显示自动填充值

如何使用 Android Studio 录制屏幕

iOS 模拟器 - 录制模拟器屏幕并包含设备框架?

当我的 iOS 应用程序在后台使用 ReplayKit 时进行屏幕录制