PhotoLibraryを変更すると、すべてのAssetLibraryオブジェクトが無効になります。 あなたが何をする必要がありますか:
1)ユーザーがアプリケーションから切り替える前に、ALAssetsLibraryChangedNotificationのオブザーバーを登録します。あなたは回避する必要がiOSのバグがあることに注意してください:http://www.openradar.me/10484334
2)アプリのうち、ユーザスイッチを使用すると、メソッドを使用して、後で取得したいALAssetsのURLを保存する前に:
[assetObject valueForPropery: ALAssetPropertyURLs];
3)ユーザーがあなたのアプリに戻って(変更が行われたとき)、あなたはオブザーバーを呼び出す必要があります。 UIにALAssetオブジェクトが表示されている場合は、AssetsLibraryの再発行をトリガーしてGUIを更新する必要があります(そうしないと、GUIは無効なALAssetsObjectsに反映されます)。 assetURLについては
[assetsLibraryInstance assetForURL:(NSURL *)assetURL resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock]
は、先ほど保存した値を渡す:
4)あなたが前のURLを保存したことを、あなたのALAsset-オブジェクトのいずれかを取得するには、メソッドを使用します。
乾杯、
ヘンドリック
ありがとうございました!これは本当にうまくいった。しかし、明確化:アプリがバックグラウンドにある場合、アプリはALAssetsLibraryChangedNotificationを受け取りますか? – kurisukun
アプリはバックグラウンドで通知を受信しません。しかし、写真ライブラリが変更された場合、アプリがバックグラウンドにある間に、アプリがフォアグラウンドに戻ったらすぐに(1回または複数回)通知が届きます。 – holtmann