iPod library access クラウド音源への対応
iOS 6よりMPMediaItemのプロパティに MPMediaItemPropertyIsCloudItem というものが追加されました。 これはデバイス内にはなく、クラウド上にある曲の場合にYES(を包んだNSNumber)が返されます。 このクラウド上にある曲というのは、私のデバイスですとiTunes Storeで購入したがデバイスには入っていない曲が該当しました。説明によるとiTunes Matchがどうこうと書いてありますが、現在日本ではiTunes Matchが使えないので確認はしていません。 (この段落の話はiOS 7)iOSに付属のミュージックアプリでは設定項目にこれを表示するかしないかを選択するところがあり、選択した場合はデバイスに入ってなくてもクラウドにあれば一覧に表示され、再生操作をするとダウンロード(ストリーミング?)されて再生します。選択しなければ表示されません。また、クラウド曲を再生した時にデバイス内にデータが残るようで、これは設定を選択しない方に切り替えても表示されます。ところが、自作アプリ内からライブラリにアクセスし、データを取得するとこの設定に関わらず全てのクラウド上の曲が得られる(得られてしまう)ようです(もしかしたらどこかで変更が出来るかもしれない)。インターネット上から取得するとどうしてもレスポンス遅延がありますので、排除したいというときはMPMediaItemPropertyIsCloudItemがYESを返すアイテムを排除する処理が必要になります。