【问题标题】:Problems with MPMediaQuery and iTunes MatchMPMediaQuery 和 iTunes 匹配的问题
【发布时间】:2013-01-07 13:07:00
【问题描述】:

我需要显示设备上当前所有播放列表的列表。问题是,在打开 iTunes Match 的设备上,任何数量的播放列表都可能在手机上保存零个项目。因为(据我所知)当您使用AVAudioPlayer 时没有可靠的方法来触发MPMediaItem download,我想过滤掉任何没有任何本地条目的播放列表。现在我可以让它循环播放单个播放列表并删除没有assetURL 的歌曲,但是如果用户有很多播放列表,这在全球范围内执行起来太慢了。我尝试过滤整个音乐库以获取播放列表

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

但是,当我循环浏览“收藏”数组时,它似乎根本没有过滤掉任何歌曲。我会尝试按歌曲是否有assetURL 进行过滤,但当然您不能按此过滤。

有没有人有一个相当快速的方法来完成这个? (或者,有没有人想出一个体面的方法来触发MPMediaItem download,因为 Apple 没有关于处理 iTunes Match 的开发人员文档?)

【问题讨论】:

    标签: ios objective-c icloud mpmediaitem mpmediaquery


    【解决方案1】:

    MPMediaItemPropertyIsCloudItem 过滤器适用于 MPMediaItems 而不是 MPMediaItemCollections。因此collections 数组不会过滤任何云项,因为它是MPMediaItemCollections 的数组。但是items 数组将过滤云项目,因为它是MPMediaItems 的数组。

    从 iOS 6 开始,没有公共 API 可以触发通过第三方应用下载云项目。用户必须切换到内置音乐应用才能执行此操作。

    【讨论】:

    • “从 iOS 6 开始,没有公共 API 可以通过第三方应用触发云项目的下载。用户必须切换到内置的音乐应用才能执行此操作。 "这是 100% 正确的吗?
    • 我发现如果 MPMediaItemIsCloudItem 返回 true,您可以通过应用程序播放曲目并收听整个内容,但仍未将其添加到本地设备 - iOS 8.1
    猜你喜欢
    • 2011-12-30
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多