测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | BSD 3.0 |
发布最新版本 | 2014年12月 |
由未归属维护。
依赖项 | |
ASIHTTPRequest | ~> 1.8.1 |
SBJson | ~> 3.2 |
Reachability | ~> 3.1.0 |
TSLibraryImport | = 0.0.1 |
libechonest.a
除了链接到libechonest.a,您的应用程序还需要链接到以下框架和库
注意:您必须在项目的“其他链接器标志”设置中添加-Objc
和-all_load
。(有关原因,请参阅使用categories构建Objective-C静态库。)
#import <ENAPI.h>
...
[ENAPI initWithApiKey:@"YOUR_API_KEY"];
ENAPIRequest *request = [ENAPIRequest requestForEndpoint:@"artist/audio"];
request.delegate = self; // our class implements ENAPIRequestDelegate
[request setValue:@"Radiohead" forParameter:@"name"]; // name=Radiohead
[request setIntegerValue:15 forParameter:@"results"]; // results=15
[request startAsynchronous];
...
- (void)requestFinished:(ENAPIRequest *)request {
NSAssert1(200 == request.responseStatusCode, @"Expected 200 OK, Got: %d", request.responseStatusCode);
NSArray *audio = [request.response valueForKeyPath:@"response.audio"];
}
...
注意,在ENAPIRequest
上存在为整数、浮点数和BOOL
设置的带类型的方法setValue:forParameter:
。支持多个值的参数使用值的NSArray
来设置。
ENAPIRequest *request = [ENAPIRequest requestForEndpoint:@"artist/search"];
[request setBoolValue:YES forParameter:@"fuzzy_match"];
[request setFloatValue:0.5f forParameter:@"min_hotttnesss"];
[request setValue:@"radiohead" forParameter:@"name"];
// multiple values
NSArray *descriptions = [NSArray arrayWithObjects:@"mood:chill", @"location:london", nil];
[request setValue:descriptions forParameter:@"description"];
注意,如果一个参数支持多个值,但你只使用一个,你可以正常设置它,例如
[request setValue:@"mood:chill" forParameter:@"description"];
访问艺术家沙盒需要对请求进行OAuth签名。ENAPIRequest现在处理像sandbox/access
端点的GET请求的OAuth签名。这种支持需要您声明您的Echo Nest API消费者密钥和共享密钥。
提供了一个新的初始化器
[ENAPI initWithApiKey:@"YOUR_API_KEY"
ConsumerKey:@"YOUR_CONSUMER_KEY"
AndSharedSecret:@"YOUR_SHARED_SECRET"];
或者,您可以通过setter设置消费者密钥和共享密钥
[ENAPI setConsumerKey:@"YOUR_CONSUMER_KEY"];
[ENAPI setSharedSecret:@"YOUR_SHARED_KEY"];
注意:您的账户的共享密钥在Echo Nest开发者配置文件页面上列出。它不是一个从端点获得的令牌。
目前端点仅需要OAuth签名(因此不需要OAuth令牌)。需要API Key、消费者密钥和共享密钥。
访问沙盒需要您个别接受服务条款(《https://developer.echonest.com/account/sandboxes`))。
使用方式
#import <ENAPI.h>
...
ENAPIRequest * req = [[ENAPIRequest alloc] initWithEndpoint:@"sandbox/access"];
// Note - you must agree to the sandbox terms of service to gain
// access to the individual artist sandboxes
[req setValue:assetId text forParameter:@"id"]; // id={desired-asset}
[req setValue:@"emi_gorillaz" forParameter:@"sandbox"]; // sandbox=emi_gorillaz
req.delegate = self; // our class implements ENAPIRequestDelegate
[req startAsynchronous];