-->

iOS detect/block screen recording using QuickTime

2019-03-22 17:34发布

问题:

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 Player video recording was no detect.

How to detect QuickTime Player?

Thanks.

回答1:

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.



回答2:

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{

    }
}