はじめに
こんにちは、suzukiです。今回はユーザがスクリーンショットを取得した場合を検知にする方法についてです。
使われるパターンとしてセキュアな情報をスクリーンショットで取得した場合や、揮発性の高い情報を撮影された場合などにユーザに知らせるために利用できます。
スクショを検知する方法
iOSではユーザのスクリーンショットの撮影前は検知できません。
iOSで検知可能なのはユーザがスクリーンショットを撮り終えたタイミングです。
スクリーンショットを取った場合に下記の通知が発行されます。
1 | class let userDidTakeScreenshotNotification: NSNotification.Name |
アプリでは、通知を受け、ユーザに注意を行うというような方針を取ることができます。
使い方
AppDelegateで受け取りたい場合は下記のように記述します。
1 2 3 4 5 6 7 8 9 10 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. NotificationCenter.default.addObserver(self,selector: #selector(didReceiveTakeScreenshotNotification(_:)),name: UIApplication.userDidTakeScreenshotNotification,object: nil) return true } @objc private func didReceiveTakeScreenshotNotification(_ notification: Notification) { //スクリーンショットの取得 print("hadScreenShot") } |
さいごに
スクリーンショットの通知以外にも、capturedDidChangeNotificationで動画の撮影の検知なども可能です。
今回の通知を受け取る方法がスタンダードだと思うのですが、面白い方法もあったので今度試してみようかと思います。