在iOS中,我可以访问iTunes歌曲列表吗?

Oli*_*lie 8 itunes ios

我正在寻找一种以编程方式(不通过UI)从我的iOS应用程序访问用户iTunes音乐库的方法.

(是的,我知道Apple不鼓励使用其他iPod接口应用程序.这不是问题:)

我想做的是:

  • 收集歌曲名称列表.
  • 让我的应用程序制作一个字谜.
  • 让用户猜出原始歌曲名称.
  • 如果他们猜对了,我会播放这首歌的片段.

(这不是我真正的应用程序,但它包含了我需要的所有部分.)我要问的部分是:如何获取歌曲名称列表,并给出歌曲名称,如何让媒体播放它?

我认为AVAssetReader会让我播放一首歌,一旦我有它的名字,所以我可以自己查看(虽然在那里指点奖励积分!) - 所以底线问题是:如何从iOS用户的iTunes资料库中获取歌曲名称列表?

Let*_*rez 6

您将需要使用MPMediaQuery来获取所有歌曲的NSArray.看看这个链接.

要播放这首歌,我建议使用AVPlayer.


sos*_*orn 5

查看文档,尤其是标题为"以编程方式获取媒体项目"的部分.

如果媒体项选择器未提供所需的控件,则可以使用此API中的数据库访问类.这些类旨在让您创建任意复杂的查询.例如,您可以检索标题包含特定单词或短语的特定类型的所有歌曲.

使用程序化访问是一个两步过程:

配置查询.请求查询检索其匹配的媒体项.媒体查询是对从设备iPod库检索内容以及如何排列这些检索到的项目的描述.它有两个要配置的属性:

过滤器是要检索的内容的描述.过滤器是可选的; 无过滤查询与整个iPod库匹配.分组类型是可选键,指定用于检索的媒体项集合的排列.放大一点,过滤器可以像您的应用程序一样简单或复杂.它由媒体属性谓词的一个或多个实例组成.媒体属性谓词是用于测试每个媒体项的逻辑条件的语句.调用查询时,将从iPod库中检索满足过滤器的项目.

可选的分组类型指定集合的​​排列和排序以及每个集合中的媒体项的排序.例如,使用"专辑"分组类型会导致按专辑分组的返回媒体项目,每个专辑的歌曲按跟踪顺序排序.