こんにちは、suzukiです。今回はユーザがスクリーンショットを取得した場合を検知にする方法についてです。
使われるパターンとしてセキュアな情報をスクリーンショットで取得した場合や、揮発性の高い情報を撮影された場合などにユーザに知らせるために利用できます。
iOSではユーザのスクリーンショットの撮影前は検知できません。
iOSで検知可能なのはユーザがスクリーンショットを撮り終えたタイミングです。
スクリーンショットを取った場合に下記の通知が発行されます。
class let userDidTakeScreenshotNotification: NSNotification.Name
アプリでは、通知を受け、ユーザに注意を行うというような方針を取ることができます。
AppDelegateで受け取りたい場合は下記のように記述します。
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で動画の撮影の検知なども可能です。
今回の通知を受け取る方法がスタンダードだと思うのですが、面白い方法もあったので今度試してみようかと思います。