For detecting iOS11 screen recording feature On or Off I used isCaptured and UIScreenCapturedDidChange Notification.
When first time I Launch the App and On iOS11 built-in screen recording feature then it notifies the selector method with value True, but when I kill (terminate) my running App and Launch app again do the same procedure again then my selector method is not getting called.
Here is my code:
I add an Observer in ViewWillAppear() method:
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil)
The selector method is as follows:
@objc
func handleNotification(notification:Notification){
let isCaptured = UIScreen.main.isCaptured
print("isCaptured value = \(isCaptured)")
}
In this case, I need to kill the app, clear the cache and again launch the app for getting screen recording event.
Please suggest what I can do here to detect recording event to protect my content from recording.
Swift 4
Add Observer
UIScreen.main.addObserver(self, forKeyPath: "captured", options: .new, context: nil)
Receive changes
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
if (keyPath == "captured") {
let isCaptured = UIScreen.main.isCaptured
print(isCaptured)
}
}
@UmeshKumath this is easy when kill the app clear the cache and again launch the app for getting screen recording event you need to run the code in viewdidload just like so:
override func viewDidLoad() {
super.viewDidLoad()
UIScreen.main.addObserver(self, forKeyPath: "some key", options: .new, context: nil)
let isCaptured = UIScreen.main.isCaptured
if isCaptured == true {
// do something
}
The feature is available on and above iOS11. Better keep it inside didFinishLaunchingWithOptions
Objective-C syntax
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions
{
if (@available(iOS 11.0, *)) {
BOOL isCaptured = [[UIScreen mainScreen] isCaptured];
if(isCaptured){
// Do the action for hiding the screen recording
}
} else{
// Fallback on earlier versions
}
return YES;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With