ChimpKit 是 MailChimp API 2.0 的 API 包装器。
需要一个 MailChimp 账户和 API 密钥。您可以在 这里 查看 API 密钥。
ChimpKit 包括对 ARC 的使用。如果您的项目不使用 ARC,您可以使用 Xcode 中项目目标的“构建阶段”和“编译源”下的 -fobjc-arc
编译器标志为每个文件启用它。
有两种方式可以将 ChimpKit 添加到您的项目中
或使用 Git 子模块。通过执行类似以下操作将 ChimpKit 添加为git仓库的子模块
cd myrepo
git submodule add https://github.com/mailchimp/ChimpKit3.git Libs/ChimpKit
现在通过将 ChimpKit3
目录中的所有内容拖拽到您的项目中添加 ChimpKit 到您的项目中。
首先,设置一个 API 密钥
[[ChimpKit sharedKit] setApiKey:apiKey];
现在您可以进行请求。例如,下面是如何订阅电子邮件地址的示例
使用块
NSDictionary *params = @{@"id": listId, @"email": @{@"email": @"[email protected]"}, @"merge_vars": @{@"FNAME": @"Freddie", @"LName":@"von Chimpenheimer"}};
[[ChimpKit sharedKit] callApiMethod:@"lists/subscribe" withParams:params andCompletionHandler:^(ChimpKitRequest *request, NSError *error) {
NSLog(@"HTTP Status Code: %d", request.response.statusCode);
NSLog(@"Response String: %@", request.responseString);
if (error) {
//Handle connection error
NSLog(@"Error, %@", error);
dispatch_async(dispatch_get_main_queue(), ^{
//Update UI here
});
} else {
NSError *parseError = nil;
id response = [NSJSONSerialization JSONObjectWithData:request.responseData
options:0
error:&parseError];
if ([response isKindOfClass:[NSDictionary class]]) {
id email = [response objectForKey:@"email"];
if ([email isKindOfClass:[NSString class]]) {
//Successfully subscribed email address
dispatch_async(dispatch_get_main_queue(), ^{
//Update UI here
});
}
}
}
}];
使用代理模式
NSDictionary *params = @{@"id": listId, @"email": @{@"email": @"[email protected]"}, @"merge_vars": @{@"FNAME": @"Freddie", @"LName":@"von Chimpenheimer"}};
[[ChimpKit sharedKit] callApiMethod:@"lists/subscribe" withParams:params andDelegate:self];
并实现 ChimpKitRequestDelegate
协议
- (void)ckRequestSucceeded:(ChimpKitRequest *)aRequest {
NSLog(@"HTTP Status Code: %d", aRequest.response.statusCode);
NSLog(@"Response String: %@", aRequest.responseString);
NSError *parseError = nil;
id response = [NSJSONSerialization JSONObjectWithData:request.responseData
options:0
error:&parseError];
if ([response isKindOfClass:[NSDictionary class]]) {
id email = [response objectForKey:@"email"];
if ([email isKindOfClass:[NSString class]]) {
//Successfully subscribed email address
dispatch_async(dispatch_get_main_queue(), ^{
//Update UI here
});
}
}
}
- (void)ckRequestFailed:(ChimpKitRequest *)aRequest andError:(NSError *)anError {
//Handle connection error
NSLog(@"Error, %@", anError);
dispatch_async(dispatch_get_main_queue(), ^{
//Update UI here
});
}
调用其他 API 端点的方式类似。请参阅 API 文档 了解详细信息。
上述示例使用 dispatch_async 在解析响应后在主队列上回调。如果您已将 shouldUseBackgroundThread
设置为 YES
,则 ChimpKit 将从后台队列中调用您的块,这样您可以以最少的界面响应影响解析 JSON 响应。您应该将 dispatch_* 回到主队列,如上例所示,在更新 UI 之前。您可以通过以下方式启用此行为
[[ChimpKit sharedKit] setShouldUseBackgroundThread:YES];
ChimpKit 默认超时时间为 10 秒。您可以将(全局)它更改为 30 秒,如下所示
[[ChimpKit sharedKit] setTimeoutInterval:30.0f];
示例应用程序中提供了通过 OAuth 登录的示例。请参阅 ViewController.m
。