我正在寻找一种以编程方式(即。,而不是通过UI)从我的iOS应用程序访问用户iTunes音乐库的方法。
(是的,我知道Apple不鼓励使用其他iPod接口应用程序。这不是问题:)
我想做的是:
- 收集歌曲名称列表。
- 让我的应用制作一个字谜。
- 让用户猜出原始歌曲名称。
- 如果他们猜对了,我会播放这首歌的片段。
(这不是我真正的应用程序,但它包含了我需要的所有部分。)我要问的部分是:如何获取歌曲名称列表,并给出歌曲名称,如何获取媒体玩吗?
我认为AVAssetReader会让我播放一首歌,一旦我有了它的名字,所以我可以自己查看(虽然在那里指点奖励积分!) - 所以底线问题是:如何从iOS用户的iTunes资料库中获取歌曲名称列表?
答案 0 :(得分:6)
您需要使用MPMediaQuery来获取所有歌曲的NSArray。查看this链接。
要播放这首歌,我建议使用AVPlayer。
答案 1 :(得分:5)
Check out the docs,尤其是标题为“以编程方式获取媒体项目”的部分。
如果媒体项目选择器未提供您想要的控件,则可以 使用此API中的数据库访问类。这些课程是 旨在让您创建任意复杂的查询。你可以,因为 例如,检索标题中特定类型的所有歌曲 包括特定的单词或短语。
使用程序化访问是一个两步过程:
配置查询。请求查询检索其匹配的媒体项。 媒体查询是对从设备检索内容的描述 iPod库以及如何安排检索到的项目。它有 要配置的两个属性:
过滤器是要检索的内容的说明。过滤器是 可选的;无过滤查询与整个iPod库匹配。该 分组类型是一个可选键,指定要使用的排列 用于检索的媒体项集合。放大一点, 过滤器可以像您的应用程序一样简单或复杂。它 由一个或多个媒体属性谓词实例组成。一个 media属性谓词是要测试的逻辑条件的陈述 每个媒体项目反对。满足过滤器的项目是 在调用查询时从iPod库中检索。
可选的分组类型指定了排列和排序 集合以及每个集合中的媒体项目的排序 采集。例如,使用“专辑”分组类型会导致 返回按专辑分组的媒体项目,每个专辑的歌曲排序 按顺序排列。