2017-09-15 34 views
1

iOS11画面録画機能のオン/オフを検出するために、isCapturedとUIScreenCapturedDidChange Notificationを使用しました。iOS11の画面記録の確認方法はオンまたはオフですか?

初めてアプリケーションを起動し、iOS11の内蔵スクリーン記録機能でセレクタメソッドに値Trueを通知しますが、実行中のアプリケーションと起動アプリケーションを強制終了(終了)して再び同じ手順を実行します私のセレクタメソッドは呼び出されていません。ここ

が私のコードである:

Iは(ViewWillAppearにオブザーバーを追加する)方法:

NotificationCenter.default.addObserver(self, selector: #selector(handleNotification), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil) 

次のように選択方法がある:この場合

@objc 
func handleNotification(notification:Notification){ 

    let isCaptured = UIScreen.main.isCaptured 

    print("isCaptured value = \(isCaptured)") 
} 

、Iが必要アプリを終了するには、キャッシュをクリアして、再びスクリーンレコーディングイベントを取得するためのアプリを起動します。

コンテンツを録画から保護するために、録画イベントを検出するためにここでできることを提案してください。

+0

あなたは 'UIScreen'で' mirrored 'プロパティを試しましたか? – yasirmturk

+0

ありがとう、はい、私はミラーリングされたプロパティを試しましたが、私は画面録画イベントだけを取得したいと思います。 – UmeshKumath

答えて

0

私はあなたがなかれかかわらず

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 
    let isCaptured = UIScreen.main.isCaptured 
    return true 
} 
+0

ありがとうございます。しかし、ユーザーが画面録画をオンまたはオフにしたときに、イベントの検索を試みます。 – UmeshKumath

+0

私はまた、 "捕獲された"特性のKVOを加えました。しかし、それは初めての動作ですが、私はアプリケーションを終了し、起動してから再びイベントを取得しません。キャプチャされています。クリアなキャッシュメモリが必要ですか? – UmeshKumath

+0

私はあなたがイベントや通知を追跡する必要はないと言いました。「捕捉された値を変更したとき」..いつでも値を読み取ることができます – yasirmturk

1

スウィフト4

UIScreen.main.addObserver(self, forKeyPath: "captured", options: .new, context: nil) 

変更

を受信オブザーバーを追加、通知のこの変数を確認することができますね
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) { 
    if (keyPath == "captured") { 
     let isCaptured = UIScreen.main.isCaptured 

     print(isCaptured) 
    } 
} 
関連する問題