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を新規作成して、メンションをつけていただければ回答させていただきます。