Is there any way to disable the screen recording? or is is possible through a configuration profile? or any third party library is available?
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
NotificationCenter.default.addObserver(self, selector: #selector(preventScreenRecording), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil)
And create a view inside main view and prevent like that.
(void) preventScreenRecording {
if (@available(iOS 11.0, *)) {
BOOL isCaptured = [[UIScreen mainScreen] isCaptured];
if (isCaptured) {
self.blockView.hidden = false;
}
else {
self.blockView.hidden = true;
}
}
When your app is started you can test UIScreen.isCaptured
property and show some splash screen if it's set to true
.
You should also observe (subscribe in some place for) capturedDidChangeNotification
notification, and do same thing (show splash screen) if UIScreen.isCaptured
is set to true
.