DoubanAPICocoa是一个Cocoa封装的豆瓣API库,非官方版,可以使用于OS X,并支持10.6及之后的版本。iOS 版本请参考这里。
DoubanAPICocoa的底层支持并兼容老版本的douban-objc-client,熟悉douban-objc-client开发的同学也可以不用更新代码,直接移植到新的库里并且编译通过。但推荐使用DoubanAPICocoa提供的DOUEngine来实现代码。
注意:示例请自行替换apiKey,并且自行申请相关权限,如豆邮和线上活动以及更多高级的功能。
- 使开发更加容易,不用关注网络层的细节
- 封装网络层
- 简单
- 使用闭包让开发者开发更简单
- All consts
- No Warning, No Error and No Build Analyze Errors
声明一个engine:
engine = [[DOUEngine alloc] initWithApiKey:kAPIKey withSecretKey:kPrivateKey withRedirUrl:kRedirectUrl];
打开豆瓣验证url:
NSString *url_str = [self.engine getConnectUrl];
从豆瓣返回code并初始化engine:
[self.engine didLoadWithCode:code];
验证通过。
[u getWhoAmI:successUserBlock failedBlock:failBlock];
DOUBroadcastEngine *s = [self.engine getEngine:kDOUBroadcast];
[s say:self.shuo_field.title successBlock:successBlock failedBlock:failBlock];
DOUEventEngine *event_engine = [self.engine getEngine:kDOUEvent];
[event_engine getEventWithRemoteID:self.eid_field.title successBlock:successBlock failedBlock:failedBlock];
该库封装了常用的变量,比如发日记如果是发私有的日记,可以直接使用kDOUPrivacyPrivate,同样相册的排序方式可以使用kDOUOrderDesc,无需自己写变量。
常用的变量文件在库的Engine/Utils里。
- DOUAPIConsts.h
- DOUAPIConsts.h
- DOUAPIErrorConsts.h
这个库支持最老的底层的实现方法,也可以非常容易的使用engine进行api开发,可以通过kDOU产品线获得相应的engine,每个engine都有getEngine方法。不过推荐在外面包装一个单例的共享engine,方便在代码各处使用。
可以删除任意不需要的模块并重新打包和分发,减少代码。
大部分接口都有基本的示例,今后会提供更多更丰富的示例。
并且该版本不支持GData等V1版本特性,只支持V2。
如果你需要iOS版本,请去:
- 开发版:douban-objc-client
- 官方版:douban-objc-client
当前版本V0.1.3,主要职责为兼容iOS版本并且封装网络层,今后使用的方法可能会不同。
当前版本不支持GData等V1版本特性,只支持V2,所以必须使用https。
当前版本只适用于64位版本,考虑到今后32位的Mac也不多,所以暂时不打算支持。
下载代码之后,可以看到Sample代码里有一个DoubanAPICocoa.framework
,直接import到自己的包里即可。
Xcode
-> Add files to PROJECT
-> select the folder
你会看到一个小的工具箱,名字为DoubanAPICocoa库已经增加完毕。
在项目的Build Phases
里的Link Binary with Libraries
增加必要的组件,如Security.framework
。
同样在Build Phases
里,在右下角找到Add Build Phase
,在下拉列表中选择Add Build Phase
,一个新的框会出现在这个页面里,打开刚创建的框,里面把刚才添加在文件列表的framework拖动到此处。并在分类选项里选择Framework。
直接拖动DoubanAPICocoa包到项目中。
打开自己的项目,在项目信息中,选择TARGET
并在里面设置编译选项,搜寻Header Search Path
,设置DoubanAPICocoa的路径。
在项目的Build Phases
里的Link Binary with Libraries
增加必要的组件,如Security.framework
。
同样在Build Phases
里,在右下角找到Add Build Phase
,在下拉列表中选择Add Build Phase
,一个新的框会出现在这个页面里,打开刚创建的框,把你需要使用的拷贝的项目拖动到此处。
无论是DoubanAPICocoa.framework还是Sample代码,在编译的时候都没有错误和警告,至少在我的平台下,如果在某些平台下出现问题,请通知我。
如果引用进来出现错误,一般是image not found
,说明DoubanAPICocoa包引用出错了,可能以下几种方法能帮到你。
- 增加文件时候选择
Copy items into destination group's folder
- 可能需要在项目的
Build Phases
里的Link Binary with Libraries
增加必要的组件,如Security.framework
。 - Header Search Path设置出错。
TIPS:一般来说,找不到framework的主要原因在于路径设置出错。
- SystemConfiguration.framework
- Security.framework
- libxml2.dylib
- libz.dylib
- Foundation.framework
和iOS版本的使用方法类似。
DOUService *service = [DOUService sharedInstance];
service.clientId = kAPIKey;
service.clientSecret = kPrivateKey;
NSString *subPath = [NSString stringWithFormat:@"/v2/event/%d", event_id];
DOUQuery *query = [[[DOUQuery alloc] initWithSubPath:subPath parameters:nil] autorelease];
query.apiBaseUrlString = service.apiBaseUrlString;
DOUHttpRequest *req = [DOUHttpRequest requestWithQuery:query target:self];
DOUService *service = [DOUService sharedInstance];
[service addRequest:req];
通过apiKey等获得一个engine。
DOUEngine *engine = [[DOUEngine alloc] initWithApiKey:kAPIKey
withSecretKey:kPrivateKey
withRedirUrl:kRedirectUrl];
通过engine获得event_engine。
DOUEventEngine *event_engine = [self.engine getEngine:kDOUEvent];
使用闭包进行网络请求。
void(^successBlock)(DOUEvent *) = ^(DOUEvent *event) {
[self updateImageUI:event];
};
使用engine内封装好的方法,把闭包传进去。
[event_engine getEventWithRemoteID:self.eid_field.title successBlock:successBlock];
具体还是请看Sample代码,简单易懂。
Sample是一个简单的客户端,用来演示各种功能。
可以在菜单栏里打开相应的Sample,Sample并不是同步更新完善。但基本上重要的接口都会有示例。
示例有:
- 豆瓣读书
- 豆瓣电影
- 豆瓣音乐
- 豆瓣同城
- 豆瓣社区
- 豆瓣用户
- 豆瓣相册
- 豆瓣评论
- 豆瓣回复
- 豆瓣广播
- 豆瓣日记
- 豆瓣豆邮
- 线上活动
v0.1
- 移植iOS版本支持MacOS并调整结构。
- 去掉GData等老版本的支持。
v0.1.1
- 使用封装的DOUEngine开发api,更加简单。
- 增加一些常用的model。
v0.1.2
- 完善Engine。