以编程方式禁用App中的屏幕截图

时间:2017-01-09 09:19:07

标签: swift

我想阻止在应用中截取页面的屏幕截图。 如何以编程方式执行此操作,以便无法截取屏幕截图。

找到检测屏幕截图的代码。是否可以在截屏后立即将其删除?

let mainQueue = NSOperationQueue.mainQueue()
NSNotificationCenter.defaultCenter().addObserverForName(UIApplicationUserDidTakeScreenshotNotification,
    object: nil,
    queue: mainQueue) { notification in
        // executes after screenshot
}

4 个答案:

答案 0 :(得分:2)

无法阻止ScreenShot,但是可以阻止Screen Recording 通过此代码。

  func detectScreenRecording(action: @escaping () -> ()) {
        let mainQueue = OperationQueue.main
        NotificationCenter.default.addObserver(forName: UIScreen.capturedDidChangeNotification, object: nil, queue: mainQueue) { notification in
            // executes after screenshot
            action()
        }
    }
    
    
    
   //Call in vewWillApper 
     detectScreenRecording {
            print(UIScreen.main.isCaptured)
            if UIScreen.main.isCaptured{
                //your vier hide code
                print("self.toHide()")
            }else{
                //  self.sceneDeleg(ate?.window?.isHidden = false
                //your view show code
                print("self.toShow()")
            }
        }

`

答案 1 :(得分:0)

在应用程序进程中,完全无法完全阻止用户截屏,这是因为您无权删除用户照片库中的照片。如果您可以访问用户的照片,那将完全是一个安全问题。

然而,有一些方法可以部分阻止屏幕截图,如下所述:Prevent screen capture in an iOS app

答案 2 :(得分:0)

从技术上讲,可以通过Photos框架找到可以找到的文档here

可以找到示例代码here

然而,这将首先询问用户的权限,然后再次确认删除;所以可能不是理想的解决方案。不幸的是,由于苹果公司的相机胶卷已被锁定,因此效果非常好。

答案 3 :(得分:-1)

我找到了一个有趣的框架,可以为您提供解决方案

它不会禁用屏幕截图。但是,如果您尝试截屏,则会捕获一个空白屏幕。

https://screenshieldkit.com