测试测试 | ✓ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
发布上次发布 | 2015年10月 |
由John Heaton,Mark Glagola,David Warner,David Warner 维护。
CocoaBloc 允许任何 Cocoa 开发者通过预构建的功能和模型,即时访问 StageBloc API。因此,它应该允许在移动应用程序中更容易、更快地使用 StageBloc API 进行开发。CocoaBloc 有两个元素,API 和 UI 元素。
CocoaBloc 可以通过 CocoaPods 简单地添加到任何项目中。只需将 CocoaBloc pod 添加到您的 Podfile
,然后运行 pod install
。
pod "CocoaBloc", :git => "https://github.com/stagebloc/CocoaBloc.git"
一旦源代码在您的项目中,以下一行代码就足够使 CocoaBloc 准备就绪。可以在 StageBloc 后端的开发者部分内创建客户端 ID 和密钥。如果您打算让用户登录以进行认证请求,还可以使用 OAuth 重定向 URI。这些内容每个应用程序一次。
[SBClient setClientID:@"client_id" clientSecret:@"client_secret" redirectURI:@"my_app_uri://"];
CocoaBloc 广泛使用了出色的 ReactiveCocoa (RAC),并且实际上所有 API 客户端 (SBClient
) 方法都不会自己发出请求,而是使用输入参数来组成一个 "冷" RACSignal
,当订阅该信号时,会执行网络请求、验证、反序列化和将错误或整洁的模型对象传回。以这种方式构建我们的 API 使其具有对 API 请求、序列化作业等事物执行非常有用的转换、链接、限制等的能力。
所有的 JSON<~>ObjC 模型映射和转换都由 Mantle 处理。因此,您会发现模型可以轻松地转换回 JSON,并且它们具有 MTLModel
子类的一切方法。
该框架已成为考虑异步处理现代 web API 的黄金标准。我们还利用了 AFNetworking 的某些扩展,将其桥接到 ReactiveCocoa 世界中,这为我们操作客户端对象的核心提供了支持。
阅读 RAC 文档。真的。内容不多,但如果不熟悉,它将帮助您了解 RAC 和与之相伴的函数式响应式思维方式。
要使用 CocoaBloc 进行未认证请求,或者为了在开发期间测试使用静态令牌的认证请求,你所需要做的只是实例化一个新的客户端。
// Creates an unauthenticated client. This client can still be used to access API
// endpoints that do not require authentication (read-only, public data).
// NOTE: You may set the OAuth token of this client manually for testing purposes
SBClient *client = [SBClient new];
要为 StageBloc 用户获取一个认证客户端,可以使用我们预配置的 OAuth 视图控制器,允许用户在 StageBloc 网站上(内嵌网页视图)安全登录,然后提供令牌。我们使用此令牌来构建一个具有以下功能的 SBClient
:
SBAuthenticationViewController *authVC = [SBAuthenticationViewController new];
// Subscription to this presentation signal will show the view controller.
// Cancellation or completion of the subscription will dismiss it.
// Upon success, the signal will send a next value of the authenticated client.
@weakify(client);
[[[authVC presentFromParent:self.window.rootViewController]
flattenMap:^RACStream *(NSString *authorizationCode) {
@strongify(client);
return [client logInWithAuthorizationCode:authorizationCode];
}]
subscribeNext:^(SBUser *loggedInUser) {
// Success
}
error:^(NSError *error) {
// Handle error
}
completed:^{
// Signal completed. This will happen if there is no error, but if no
// next value has been sent yet, this means that the
// user pressed cancel and dismissed log in view.
}];
在每个构建过程中,使用 appledoc 生成从我们的头部注释中的 docset。强制要求您文档化框架中所有的公有类和方法。生成的文档文件可以轻松地导入到 Dash 中,每次构建都会提供即时更新的、风格仿苹果的、可搜索/索引的文档,无需额外努力。
如果您是 Dash 的用户,这是 OS X 上出色的文档查看器应用程序,您可以导入这个动态 docset,并始终从上次构建获取最新的文档。
只需按 +
按钮,导航到 <this-repository>/Doc
并选择 docset(您至少需要编译一次以使其出现)。现在,您有了一些像苹果一样优良的文档可以工作,而不是要去查找头文件。
CocoaBloc 将随着 StageBloc API 的发展而扩展,理论上在任何时候都应实现所有可用的 API 端点。如果您愿意贡献并帮助实现这一目标,可以查看 Guidelines.txt
文件!