MediaMetadata-iOS
iOS端末上の写真や動画に対して、簡単にメタデータを付与するためのSDKです。
インストール条件
MediaMetada-iOSは以下の環境での動作を保証しています。
- iOS 12.1+
- Xcode 10.1+
- Swift 4.2+
導入方法
MediaMetada-iOSはCarthageでの導入にのみ対応しています。
Carthage
Carthageを使ってMediaMetada-iOSをXcodeプロジェクトに導入するには、Cartfileで以下の文言を指定してください。
github "falcon0328/MediaMetadata-iOS"
利用方法
MediaMetadata-iOSの実際の利用手順を以下に記載します。
1. Photos.frameworkをインポートします
import Photos
2. PHAssetをフェッチ
let assets = PHAsset.fetchAssets(with: nil)
3. Media 型の配列を取得できます。
MediaLibraryクラスのloadメソッドにPHFetchResult<PHAsset>を与えることでカメラロールの写真や動画や音声を独自のMediaプロトコル(以下、メディア)にマッピングして提供します。
(※ MediaLibraryはシングルトン専用なのでsharedプロパティから各種操作を行ってください。)
let mediaList = MediaLibrary.load(assets: assets)
4. メディアからは以下のような形式でメタデータやData型のデータとして取得できます。
let media = mediaList.first!
media.getData(completionHandler: @escaping (Data?) -> Void)
media.getMetadata(completionHandler: @escaping ([MetadataKey : Metadata]) -> Void)
(※ ただし、これらのメソッドは非同期です。)
5. メタデータの読み込みや編集
メタデータの読み/書きは read/write メソッドからできます。メタデータは、データを内部的に[String: Any]として管理しています。
(※ 例えば写真のメタデータはExifやTIFFなどがあり、これらもMetadata型のデータとして表現します。)
6. メタデータをメディアに書き込む
メタデータを際には、メディアのsetMetadata(key: MetadataKey, value: Metadata)を利用します。
7. メディアの保存
メディアのsave(completionHandler: @escaping (Bool, Error?) -> Void)メソッドを呼ぶことでカメラロールに新しいデータとしてメタデータ付きで保存されます。
クラス図
MediaMetada-iOSは以下のクラス図をもとに実装されています。

クラスリファレンス
MediaMetadataSDKのクラスリファレンスはこちらより参照できます。
ライセンス
MediaMetada-iOSは MIT LICENSE です。詳細はMIT Licenseを参照ください。
クレジット
MediaMetadata-iOS は Falcon Techの活動で作成されています。PRやご要望(Issue)もお待ちしております。
FAQ
Q&Aの仕方
Issueを新規作成して、メンションをつけていただければ回答させていただきます。
View on GitHub
MediaMetadataSDK Reference
