2

現在デバイスにあるすべてのプレイリストのリストを表示する必要があります。問題は、iTunes Match がオンになっているデバイスでは、電話に保存されているアイテムがゼロのプレイリストがいくつあってもよいことです。(私が知る限り)MPMediaItem downloadを使用しているときにをトリガーする信頼できる方法AVAudioPlayerがないため、ローカル エントリを持たないプレイリストを除外したいと思います。今のところ、個々のプレイリストを循環させて、 を持たない曲を削除することがassetURLできますが、ユーザーが多くのプレイリストを持っている場合、これをグローバルに行うには遅すぎます。音楽ライブラリ全体をフィルタリングして、プレイリストを取得しようとしました

MPMediaQuery *songsQuery = [MPMediaQuery songsQuery];
[songsQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithBool:NO] forProperty:MPMediaItemPropertyIsCloudItem]];
songsQuery.groupingType = MPMediaGroupingPlaylist;

ただし、「コレクション」配列を循環すると、どの曲も除外されないように見えます。曲に があるかどうかでフィルタリングしてみますassetURLが、もちろんそれでフィルタリングすることはできません。

誰かがこれをやってのけるかなり速い方法を持っていますか? MPMediaItem download(代わりに、Apple には iTunes Match の扱いに関する開発者用ドキュメントがないようなので、誰かが をトリガーする適切な方法を見つけましたか?)

4

1 に答える 1

2

フィルタは、ではなくMPMediaItemPropertyIsCloudItemに適用されます。したがって、配列は の配列であるため、クラウド アイテムをフィルタリングしません。ただし、配列は の配列であるため、クラウド アイテムをフィルター処理します。MPMediaItemMPMediaItemCollectioncollectionsMPMediaItemCollectionitemsMPMediaItem

iOS 6 の時点では、サード パーティ アプリを介してクラウド アイテムのダウンロードをトリガーするパブリック API はありません。これを行うには、組み込みの音楽アプリに切り替える必要があります。

于 2013-01-28T21:34:35.660 に答える