MediaMetadata-iOS

iOS端末上の写真や動画に対して、簡単にメタデータを付与するためのSDKです。

Carthage compatible MIT License iOS Xcode language

インストール条件

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