How to disable screen Recording in iOS app

前端 未结 3 2040
抹茶落季
抹茶落季 2021-01-03 03:17

Is there any way to disable the screen recording? or is is possible through a configuration profile? or any third party library is available?

相关标签:
3条回答
  • 2021-01-03 03:21
    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
    
    0 讨论(0)
  • 2021-01-03 03:25
    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;
        }
    }
    
    0 讨论(0)
  • 2021-01-03 03:39

    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.

    0 讨论(0)
提交回复
热议问题