为 BandsInTown API 提供Objective-C API包装器(http://www.bandsintown.com/api/overview)。
要安装API,将 BandsintownAPI 文件夹拖到您的项目中,并将所有文件添加到您的目标中。目前也要求 JSONKit。我将在不久的将来添加 Cocoapods 支持,这将使此过程更加合理。
必需:在应用代理中,在 application:didFinishLaunchingWithOptions: 方法中注册您的应用程序名称
#import "MyAppNameDelegate.h"
#import "BandsintownAPI/Bandsintown.h"
@implementation MyAppNameDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[BITAuthManager provideAppName:@"MyAppName"];
// Override point for customization after application launch.
return YES;
}
请求分为4个类别。
可以使用名称、Music Brainz ID 或 Facebook ID 来查找艺术家。有几个类方法将返回艺术家请求对象。由于它们设计用于仅用于艺术家请求,因此创建后不要修改这些对象。
+ (instancetype)artistRequestForName:(NSString *)artistName;
+ (instancetype)artistRequestForFacebookID:(NSString *)facebookID;
+ (instancetype)artistRequestForMusicBrainzID:(NSString *)mbid;
可以在给定的 BITDateRange 中搜索事件。有几个方法可以简化此过程。
+ (instancetype)allEventsForArtist:(BITArtist *)artist;
+ (instancetype)upcomingEventsForArtist:(BITArtist *)artist;
+ (instancetype)eventsForArtist:(BITArtist *)artist
inDateRange:(BITDateRange *)dateRange;
要手动在日期范围内搜索艺术家,
// Create artist
BITArtist *artist = [BITArtist artistNamed:@"Tera Melos"];
// Date range for the next 30 days
BITDateRange *dateRange = [BITDateRange dateRangeWithStartDate:[NSDate date]
andEndDate:[NSDate dateWithTimeIntervalSinceNow:2592000]];
// Create the request
BITRequest *request = [BITRequest eventsForArtist:artist
inDateRange:dateRange];
通过将 BITLocation 添加到事件请求中创建事件搜索。可以使用字符串(在美国和加拿大为城市/州,在其他地方为城市/国家)或使用 CLLocationCoordinate2d 创建 BITLocations。setSearchLocation:andRadius 实例方法很有用,可以将事件请求转换为事件搜索。
// Create the location
BITLocation *location = [BITLocation locationWithPrimaryString:@"New York"
andSecondaryString:@"NY"];
// Create events request
BITRequest *request = [BITRequest eventsForArtist:[BITArtist artistNamed:@"You Blew It!"]
inDateRange:[BITDateRange upcomingEvents]];
// Add the location to the search
[request setSearchLocation:location
andRadius:@150];
推荐搜索是通过在事件搜索请求上调用实例方法includeRecommendationsExcludingArtist:来创建的。当排除艺术家参数设置为YES时,搜索中的原始艺术家将不会列在结果中。从上一个示例继续
// Only get events from recommended artists
[request includeRecommendationsExcludingArtist:YES];
要发送请求数据,只需调用[BITRequestManager sendRequest:withCompletionHandler:]方法。响应通过一个代码块返回。如果请求成功,该代码块将有一个BITResponse对象参数。如果请求是为了艺术家,BITResponse的艺术家参数将被设置为API中的数据。所有其他请求将具有BIT事件对象的数组作为事件参数。如果您想手动解析JSON响应,则rawData参数包含解析响应的JSON字符串。
// Send an event request
[BITRequestManager sendRequest:request
withCompletionHandler:^(BOOL success,
BITResponse *response,
NSError *error) {
if (!success) {
NSLog(@"Error: %@", error.localizedDescription);
} else {
NSLog(@"Raw Data: %@", [response rawResponse]);
for (BITEvent *event in [response events]) {
NSLog(@"Event Name: %@", [event title]);
}
}
}];
本作品采用LGPL许可。有关更多信息,请参阅LICENCE.md文件。