MPMediaQuery和iTunes Match的问题
我需要显示设备上当前所有播放列表的列表。 问题是,在打开iTunes Match的设备上,任意数量的播放列表都可以在手机上保存零项。 因为(据我所知)当你使用AVAudioPlayer
时没有可靠的方法来触发MPMediaItem download
,我MPMediaItem download
滤掉任何没有任何本地条目的播放列表。 现在我可以让它循环播放单个播放列表并删除没有assetURL
歌曲,但如果用户有很多播放列表,那么全局播放太慢了。 我尝试过滤整个音乐库以获取播放列表
MPMediaQuery *songsQuery = [MPMediaQuery songsQuery]; [songsQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithBool:NO] forProperty:MPMediaItemPropertyIsCloudItem]]; songsQuery.groupingType = MPMediaGroupingPlaylist;
但是,当我在“集合”数组中循环时,它似乎根本不会过滤任何歌曲。 我会尝试根据歌曲是否有assetURL
,但当然你无法assetURL
过滤。
有没有人有一个相当快的方法来解决这个问题? (或者,有没有人想出一个合适的方式来触发MPMediaItem download
,因为Apple不喜欢有关处理iTunes Match的开发者文档?)
MPMediaItemPropertyIsCloudItem
filter适用于MPMediaItem
而不适用于MPMediaItem
。 因此, collections
数组不会过滤任何云项,因为它是MPMediaItemCollection
的数组。 但items
数组将过滤云项,因为它是一个MPMediaItem
数组。
从iOS 6开始,没有公共API可以触发通过第三方应用程序下载云项目。 用户必须切换到内置音乐应用程序才能执行此操作。