天天看点

Use GraceNote SDK in iOS(二)获取音乐的完整信息

在需求彻底明朗化,外加从musicfans转到gracenote,再从gracenote的gnsdk转到ios sdk后,终于完成了在ios上通过音乐的部分信息获取完整信息的功能了。(好吧,我承认是相对完整。。。)

首先介绍下在项目中配置gracenote的ios sdk。

sdk的下载地址:

注意要先登录才能见到文件的下载链接。另外官网还给出来一个,完全跟着走在xcode 5是走不通的,不过也具有一定的指导作用,建议看一看。

下载解压后,新建一个工程,添加gracenotemusicid.framework到工程中:

Use GraceNote SDK in iOS(二)获取音乐的完整信息

新建一个头文件gracenote.h,导入该框架中的头文件(在本工程中已经导入全部需要使用到的头文件了):

然后配置工程环境,依次在build phases中加入下列系统库文件:

Use GraceNote SDK in iOS(二)获取音乐的完整信息

配置完成。

其实这个sdk的使用非常的简单。

第一步,通过你的gracenote帐号配置gnconfig类(我直接放在了appdelegate中,这样可以配置可以全局使用):

client id就是申请应用时的id,不清楚的可以参考。然后设置content.coverart属性打开,否则返回的数据中将不会有专辑封面。

第二步,通过下面的方法发起查询请求:

在demo中,就是一个button中的方法:

注意resultready参数设置为一个遵守gnsearchresultready协议的对象,也就是self。

config参数设置为全局的配置。

artist,albumtitle,tracktitle分别为艺术家,专辑名称,音乐名等,这些是搜索的key,三个参数最多可以缺省两个。

第三步,在查询成功后,我们可以从gnresultready:方法中获取服务器返回的数据,从中剥离出我们需要的信息。但是,非常奇怪的是,对于返回结果中的每一个gnsearchresponse对象,其albumcoverart均为nil。如下图所示,注意是10个对象中的每一个对象的m_coverart的值都是nil。

Use GraceNote SDK in iOS(二)获取音乐的完整信息

替代的方法是,记录下gnsearchresponse对象的id信息,然后通过albumid发起二次请求,从服务器中获取完整的专辑信息(这样做确实不好,但是目前我只找到这个解决方法)

在下一个视图中通过albumid发起二次请求:

上几张运行结果图:

Use GraceNote SDK in iOS(二)获取音乐的完整信息
Use GraceNote SDK in iOS(二)获取音乐的完整信息
Use GraceNote SDK in iOS(二)获取音乐的完整信息

这个demo通过音乐名/专辑名/艺术家获取到专辑封面,歌曲风格,完整的歌曲名,完整的艺术家列表,歌曲风格,发行信息等相对较为完整的信息,重点是拿到了专辑的封面。真机调试过,没什么问题,看来我可以交差了。

完整的代码我就不贴出来了,有兴趣的下载看看。

说明:由于gracenote的sdk有71m,在demo中我将其移除,因此demo是无法运行的。请自行到gracenote网站中下载gracenotemusicid.framework并添加到工程中。