iOS detect/block screen recording using QuickTime player

后端 未结 2 462
醉话见心
醉话见心 2021-02-11 10:43

I want to block screen recording or video output per my app using QuickTime Player.

I had detected hdmi output and airplay with UIScreen. But QuickTime Play

相关标签:
2条回答
  • 2021-02-11 11:43

    Thus don't know detect QuickTime Player recording.

    But I Found a solution with some trick.

    If QuickTime Player recording is running, AVAudioSession's output portType has been changed to HDMIOutput.

    So I coding as follows...(Swift 2.2)

    func checkOutputPortType() {
        let asRoute = AVAudioSession.sharedInstance().currentRoute
        for output in asRoute.outputs {
            if output.portType == AVAudioSessionPortHDMI {
                // something you want..
            }
        }
    }
    

    Insert that function in ViewDidLoad and added AVAudioSessionRouteChangeNotification notification.

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(checkOutputPortType), name: AVAudioSessionRouteChangeNotification, object: nil)
    

    Thanks.

    0 讨论(0)
  • 2021-02-11 11:46

    With iOS 11 you can use the notification

    NSNotification.Name.UIScreenCapturedDidChange
    

    on AppDelegate.swift

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
        NotificationCenter.default.addObserver(self, selector: #selector(checkIFScreenIsCapture), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil) ......
    

    use selector

    func checkIFScreenIsCapture(notification:Notification){
        guard let screen = notification.object as? UIScreen else { return }
        if screen.isCaptured == true {
    
        }else{
    
        }
    }
    
    0 讨论(0)
提交回复
热议问题