itok@itok_twit 2011.10.22 AssetsLibraryについて (iOS5対応版)
itok@itok_twit2011.10.22
AssetsLibraryについて(iOS5対応版)
自己紹介•いとうけい(いとーけー, itok, @itok_twit)
•京都在住•職業プログラマーで日曜プログラマー•作ったiPhoneアプリはたくさん
そら案内
Book+
SmartTub
月読君
PictShare
iPicture
AssetsLibraryについて
•iPhone/iPad内の写真や動画にアクセスするためのライブラリ
AssetsLibraryとは
•EXIFなどのすべてのメタデータにアクセスできる
•一部のメタデータには高速にアクセスできる•ファイルの生データにアクセスできる
ImagePickerとの違い
•独自のカメラロールっぽいものが作れる嬉しいこと
•辞書的意味:資産•画像、音声、動画などの抽象的なデータオブジェクト
Assetsとは
ALAssetsLibrary
ALAssetsGroup
ALAsset
ライブラリ本体
アルバムとかイベントとか
Asset
ALAssetRepresentation データ
構造
ALAssetsLibrary ALAssetsGroup
ALAsset
group type
URL enumeration
ALAssetRepresentation
representation
構造
•property(高速にアクセス)
•date
•カメラロールでの挙動•iOS4 : 保存日(≠撮影日)
•iOS5 : 撮影日(EXIFに情報があれば)
•location
•thumbnail(square: 75px)
•iOS5 : aspectRatioThumbnail追加
ALAsset
•metadata(すべてのメタデータ)
•CGImage
•iOS5 : fullScreenImageが回転処理済みのものに
•URL (assets-library://)
•iOS4 : 連番
•iOS5 : GUID
•生データ•ファイル名 (iOS5)
ALAssetRepresentation
•「位置情報サービス」への許可が必須•ALAssetsLibraryChangedNotificationの受信
注意点
iOS5での主な変更点(1)•アルバム作成APIの追加
•アルバムの削除は不可•デバイス内で作成されたアルバムにしかassetを追加できない
iOS5での主な変更点(2)•保存系APIの充実
•writeModifiedImageDataToSavedPhotosAlbum:metadata:completionBlock
•新しいassetを生成する(オリジナルのassetへはoriginalAssetで参照可能)
•EXIFあればdate propertyも保持
•setImageData:metadata:completionBlock
•writeModified...で生成されたassetをさらに変更する(オリジナルのassetに対しては無効っぽい←editable要確認)
iOS5でわかっている問題•ALAssetsLibraryChangedNotificationが飛んでこない!
•writeImageDataToSavedPhotosAlbum:metadata:completeBlock: などのカメラロール保存APIをダミーで呼び出すと動き出す
•Aperture経由で写真を同期した場合にALAssetPropertyDateの値がおかしい
•回避方法はありません。ユーザに謝るだけ*いずれもAppleではバグとして認識済み
まとめ•困った時はまずはiOS4プログラミングブック
•iOS5上ではまだ不安定なところもあるのでどんどんバグレポートしましょう!