カテゴリー: iOS

【Swift】スクリーンショットの検知

はじめに

こんにちは、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で動画の撮影の検知なども可能です。
今回の通知を受け取る方法がスタンダードだと思うのですが、面白い方法もあったので今度試してみようかと思います。

おすすめ書籍

suzuki

シェア
執筆者:
suzuki
タグ: Swift

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

2週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

4週間 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前