如何检查iOS11屏幕录制打开或关闭?

问题描述:

用于检测iOS11屏幕录制功能开或关我使用了isCaptured和UIScreenCapturedDidChange通知。如何检查iOS11屏幕录制打开或关闭?

当我第一次启动应用程序和在iOS11内置屏幕录制功能时,它会通知值为True的选择器方法,但是当我杀死(终止)我正在运行的应用程序并再次启动应用程序时,再次执行相同的程序我的选择器方法没有被调用。

这是我的代码:

我在viewWillAppear中添加一个观察员()方法:

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

选择器方法如下:

@objc 
func handleNotification(notification:Notification){ 

    let isCaptured = UIScreen.main.isCaptured 

    print("isCaptured value = \(isCaptured)") 
} 

在这种情况下,我需要杀死应用程序,清除缓存并再次启动应用程序以获取屏幕录制事件。

请建议我可以在这里做些什么来检测录制事件以保护我的内容不被录制。

+0

你试过UIScreen上的'mirrored'属性吗? – yasirmturk

+0

谢谢,是的,我尝试了镜像属性,但我只想获得屏幕录制事件。 – UmeshKumath

我想你可以送花儿给人不管检查该变量的通知

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 
    let isCaptured = UIScreen.main.isCaptured 
    return true 
} 
+0

感谢您的回应,但我会尝试在用户开启或关闭屏幕录制时查找事件。 – UmeshKumath

+0

我还在“已捕获”属性中添加了KVO。但它只能第一次运作,但当我杀了应用程序并重新启动后,没有从isCaptured获取事件。是否需要清除缓存? – UmeshKumath

+0

就像我说你不需要跟踪事件或通知或“当它改变捕获的值”..你可以随时读取值 – yasirmturk

斯威夫特4

添加观察员

UIScreen.main.addObserver(self, forKeyPath: "captured", options: .new, context: nil) 

接收变化

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) { 
    if (keyPath == "captured") { 
     let isCaptured = UIScreen.main.isCaptured 

     print(isCaptured) 
    } 
}