我想阻止在应用中截取页面的屏幕截图。 如何以编程方式执行此操作,以便无法截取屏幕截图。
找到检测屏幕截图的代码。是否可以在截屏后立即将其删除?
let mainQueue = NSOperationQueue.mainQueue()
NSNotificationCenter.defaultCenter().addObserverForName(UIApplicationUserDidTakeScreenshotNotification,
object: nil,
queue: mainQueue) { notification in
// executes after screenshot
}
答案 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)