Photos.framework でスクリーンショット画像の一覧を取得する
iOS 9 β2で
PHAssetMediaSubtypePhotoScreenshot NS_AVAILABLE_IOS(9_0) = (1UL << 2)
が追加された。
これを使えば写真ライブラリからスクリーンショット画像のみを取得したり、逆にスクリーンショットを排除した画像一覧を取得する事ができる。
コードは以下
まず全ての画像アセットを取得し、enumarate する際に PHAssetMediaSubtypePhotoScreenshot
マスクを使ってスクリーンショットのみを抽出する。
取得した PHAsset
から画像データを取得するには PHImageManager
を用いる。
実機で試したところ2009年から現在までのスクリーンショットが正しく取得できた。
保存されている画像のメタデータか何かにスクリーンショットであるという情報が入っているのか、それとも何かスクリーンショット判定のロジックが入っているのか?
PHPhotoLibrary
の変更通知と合わせればスクリーンショットが撮られた事を検出するのにも使えそう。