你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> Use MusicBrainz in iOS(一)初步使用

Use MusicBrainz in iOS(一)初步使用

編輯:IOS開發綜合

最近比較忙,一些文章寫到了印象筆記中去了,也確實沒有什麼拿得出手寫上博客的,所以最近都沒怎麼寫博客。

今天接到了一個任務,就是使用MusicBrainz獲取音樂的完整信息。今天下來,簡單搭建好了工程的環境,寫了個最簡單的Demo,其中遇到了不少的坑,現在總結下,讓朋友們少走點彎路。

首先介紹下MusicBrainz,簡單來說它就是一個數據庫(或者說是音樂世界的百科全書),通過它可以根據音樂文件的一小段信息,如歌曲名,歌手和創作時間等零碎信息,從數據庫中獲取該歌曲的完整信息。

對於那些熱愛音樂而又有點強迫症的用戶是最適合不過的了。


由於任務只是在iOS上發起網絡請求從MusicBrainz中獲取數據,所以我直奔主題了。

1.Clone MusicBrainz-objc from GitHub

從GitHub上下載MusicBrainz-objc的第三方類庫,注意一定要Clone(原因下面說明),不能簡單地Download ZIP:

\

也可以直接用命令git clone,只要不是簡單的Download ZIP就行了。


2.Create static library and headers

打開工程,選擇libmusicbrainz-iphoneos的scheme,Build工程。

如果該文件來自於Download ZIP,由於沒有git文件,所以運行shell script時會報錯,也無法加載submodules。

如果之前已經運行過了,建議通過Command + Shift + K,Clean一下已經生成的文件。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"/uploadfile/Collfiles/20140410/2014041009314117.png" alt="\">


在Products下通過Show in Finder打開生成的文件路徑:

\


3.Add library to project

新建一個工程MusicBrainzDemo,將Debug-iphoneos或Debug-iphonesimulator中生成的靜態庫文件和頭文件復制到該工程的MusicBrainzDemo文件夾中。

\

\

注意一定要將Headers和.a文件放進MusicBrainzDemo / MusicBrainzDemo目錄中,否則要在Build Settings下另外設置類庫的查找路徑。

接著添加以上文件到工程中。


4.Build Settings

打開MusicBrainzDemo工程,打開Build Settings選項,搜索Header Search Paths,添加一項:$(SDKROOT)/usr/include/libxml2,目的是給出libxml2這個動態庫的頭文件搜索路徑。

如下圖:\


由於MusicBrainz類庫還用到了自行創建的Category,所以還要在Other Linker Flags中添加-all_load選項。否則會報錯。

\


5.Build Phases

打開Build Phases選項,添加以下類庫:

\


經過以上步驟,類庫在工程中就配置好了,有點麻煩,CocoaPods也不支持該類庫(該項目最近一次更新在兩年前,現在都來到了iOS 7的年代,原來的工程還停留在iOS 5,如果按MusicBrainz在GitHub上的指導還需要iphone simulator 5.1,實在太麻煩。挺大的一個坑,所以這裡我直接按照自己的思路配置項目)。


6.Code and Test

添加代碼,測試一下。關於MusicBrainz-iOS類庫中的API詳見其文檔。

代碼如下:

#import "ViewController.h"
#import "MB.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    MBConnection *conn = [MBConnection connection];
    
    MBRequest *req = [MBRequest lookupWithEntity:MBEntityArtist
                                            mbid:@"86119d30-d930-4e65-a97a-e31e22388166"
                                   incParameters:(MBIncParameterArtistRels | MBIncParameterReleaseGroups)];
    
    void (^successBlock)(MBRequest *, MBMetadata *) = ^(MBRequest *request, MBMetadata *metadata) {
        NSLog(@"%@", metadata.Artist.Name);
        NSLog(@"success");
    };
    
    void (^failureBlock)(MBRequest *, NSError *, NSData *) = ^(MBRequest *request, NSError *error, NSData *data) {
        NSLog(@"Error for %@", error);
    };
    
    [conn enqueueRequest:req onSuccess:successBlock onFailure:failureBlock];
}

@end

運行後控制台輸出如下:

2014-04-10 02:00:46.632 MusicBrainzDemo[16273:60b] -[MBConnection enqueueRequest:onSuccess:onFailure:] [Line 120] method => Thursday, April 10, 2014 at 2:00:46 AM China Standard Time
Request
-------
curl -X GET -H "Accept-Language: en, fr, de, zh-Hans, zh-Hant, ja, nl, it, es, es-MX, ko, pt, pt-PT, da, fi, nb, sv, ru, pl, tr, uk, ar, hr, cs, el, he, ro, sk, th, id, ms, en-GB, en-AU, ca, hu, vi, en-us" -H "User-Agent: libmusicbrainz-objc-faf64ac" "http://musicbrainz.org:80/ws/2/artist/86119d30-d930-4e65-a97a-e31e22388166/?client=libmusicbrainz-objc-test&inc=release-groups%2Bartist-rels&limit=25&offset=0"
2014-04-10 02:00:46.637 MusicBrainzDemo[16273:60b] -[MKNetworkEngine reachabilityChanged:] [Line 194] Server [musicbrainz.org] is reachable via Wifi
2014-04-10 02:00:49.781 MusicBrainzDemo[16273:60b] 陳奕迅
2014-04-10 02:00:49.781 MusicBrainzDemo[16273:60b] success

這段代碼的功能是通過一個MBID從MusicBrainz數據庫中獲取藝術家信息,也就是陳奕迅(歌神啊)。


初步的配置和簡單的測試Demo到此為止,接下來會做稍微深層次的探索。博客會繼續更新。



  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved