PhoenixPlatform-iOS-SDK 0.5.3

PhoenixPlatform-iOS-SDK 0.5.3

TestsTested
LangLanguage Obj-CObjective C
License Custom
ReleasedLast ReleaseDec 2014

未声明的维护。



 
依赖项
AFNetworking~> 2.1
AFOAuth2Client@phoenixplatform~> 0.1.1
YapDatabase~> 2.3
 

  • Tigerspike Products

概览

Tigerspike Phoenix SDK (TSPhoenix) 是用于Tigerspike Phoenix Platform的iOS SDK。它允许您在Phoenix Platform上构建iPhone / iPad应用程序。通过使用SDK而不是HTTP API,您可以大量节省开发工作量,连接objective-level APIs,并专注于UI。

  • 本地Objective-C API
  • 本地Objective-C模型,100%覆盖了Phoenix服务器端模型
  • CocoaPod安装
  • 轻量级:TSPhoenix是建立在AFNetworking之上的一个很薄层
  • OAuth2:登录,登出,授权令牌等

设计目标

  • 即插即用,本地Objective-C API
  • 显著的较少胶水代码
  • 反复执行的事情应该自动化
  • 模块化设计,松耦合以提高稳健性
  • 简单的事情简单,复杂的事情可行
  • 避免重新发明轮子

架构

TSPhoenix是在网络和数据库层之上构建的一个薄层。它包括:所有 Phoenix数据类型模型。它还包含一些辅助器,以简化与Phoenix API的工作。

TSPhoenixClient是SDK的Singleton入口点。它是AFHTTPClient的一个标准子类。它也拥有所有Phoenix模块(身份,媒体,联盟,消息,分析)。

Architecture

Beta版本发布

Tigerspike Phoenix SDK (TSPhoenix) for iOS正在积极开发中。因此,API设计可能会在未来改变。这意味着,如果您有一个3-6个月内发布的项目,今天就可以开始使用SDK。

TSPhoenix已经在为新闻阅读器应用程序Fuse提供动力。通过使用SDK,Fuse开发人员将模型,缓存和网络管理工作完全委托给TSPhoenix。这样,他们可以专注于提供杀手级的用户体验,并将数据处理工作留给Phoenix。

状态

  • 安装:目前只支持Cocoapod
  • 示例应用:即将推出。
  • 模型生成:100%正常工作
  • 模型映射JSON -> Objective-C:100%正常工作
  • 欢迎所有贡献!请使用“问题”页面提交反馈。
  • 或者分叉并提交Pull Requests
  • Beta版本发布
  • 正在准备文档
  • 单元测试在待办事项列表中

对那些想阅读一些代码的好奇者

如果你想阅读一些 Objective-C 代码,请查看 Source/ 和 Models/ 目录

如果你想知道模型是如何自动生成的,请查看 Generators/ 目录

依赖项

为什么?你问,为什么 SDK 库中有依赖项?

原因很简单:不要重新发明轮子。我们已经在使用 AFNetworking 处理 HTTP 请求。YapDatabase 是建立在 SQLite 上的稳固的键值数据库。如果我们自己编写网络和数据库,将会消耗大量精力,而且结果也不一定更好。通过利用最好的开源组件,

AFNetworking, ~>2.1

YapDatabase ~> 2.3 数据库(缓存)层在 Phoenix SDK 中。

AFOAuth2Client:提供了 OAuth2,与 Phoenix 身份认证集成。使用 PhoenixPlatform 的这个库分支。

完整的文档即将推出。以下是一些示例,以便您开始

设置

在 - applicationDidFinishLaunching

[TSPhoenixClient setUpWithBaseURL:[NSURL URLWithString:@"https://api.phoenixplatform.com.sg/"]
                         clientID:@"client_ID"
                     clientSecret:@"top_secret"
                        projectID:123];

由于 Phoenix 已部署在许多地区(还有更多),我们使 baseURL 可配置,以允许 TSPhoenix 指向任何地区(.sg、.uk 等)和任何环境(开发、测试、生产)。

用户认证

[[TSPhoenixClient identity] authenticateWithUsername:self.userField.text
                                            password:self.passwordField.text
                                             success:^(AFOAuthCredential *credential) {
                                                 // Token is automatically saved to keychain
                                                 // It's also auto restored between app launches
                                             } failure:^(NSError *error) {
                                                 // Handle error
                                             }];

获取当前用户资料

NSString *path = @"identity/v1/users/me";
[[TSPhoenixClient sharedInstance] GET:path
                           parameters:nil
                              success:^(AFHTTPRequestOperation *operation, id responseObject) {
                                      NSDictionary *dict = [(AFJSONRequestOperation *)operation responseJSON];
                                      dict = dict[@"Data"][0];
                                      TSUser *user = [[TSUser alloc] initWithDictionary:dict];

                                      // Do something about the user

                                  } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                                      // Handle error
                                  }];

更多示例可在 维基页面 中找到。

模块

TSPhoenixClient

SDK 所有模块的单一入口。它是一个标准的 AFHTTPClient 子类,处理所有底层网络流量。[TSPhoenixClient sharedInstance]

所有模块都是共享实例的属性,即 [TSPhoenixClient sharedInstance].identity [TSPhoenixClient sharedInstance].syndicate

TSPhoenixIdentity

Phoenix 身份认证模块,负责 OAuth 登录/注销、加载会员资格等。

TSPhoenixSyndicate

Phoenix 交换模块,负责加载数据库文章、将文章交互发送回 Phoenix。

安装

请阅读 Phoenix 入门指南 了解 Phoenix API 的基本知识。对于循序渐进的教程,请参阅 入门

pod 'PhoenixPlatform-iOS-SDK', :git => 'https://github.com/phoenixplatform/phoenix-ios-sdk.git', :branch => 'develop'

在 Prefix.pch 中

#import <TSPhoenix/TSPhoenix.h>

在 AppDelegate.m -appDidFinishLaunching

[TSPhoenixClient setUpWithClientID:…]

数据库: YapDatabase

TSPhoenix 提供了对 YapDatabase 的即插即用集成。所有模型对象都符合 NSCoding 协议,这意味着你可以选择使用你自己的数据库。

为什么我们选择 YapDatabase,而不是 Core Data/FMDB/SQLite 等?

选择为 TSPhoenix 设计数据库的标准:

  • 健壮。理想情况下,数据库需要 没有任何 维护
  • 灵活性。如果服务器端模型发生变化,数据库不应出错或报错
  • 直观。在对象级别上工作,而不是数据库表级别。
  • 灵活 & 扩展性

我们评估了许多选项,包括Core Data和普通SQLite等。

Core Data不行,因为:a).它强制执行严格的模式,需要版本迁移。b).没有从服务器模型自动生成.xcdatamodel的方法。

普通SQLite非常底层。我们不希望人们在学会使用TSPheonix之前先学习SQL。他们应该讲Cocoa(NSObjects),而不是表、查询等。

来自YapDatabase维基页面

YapDatabase包含两个主要特性

  • 一个基于sqlite的集合/键/值存储,用于iOS和Mac(基础)
  • 一个插件架构,提供了如视图、辅助索引、全文搜索等高级功能

这个页面完美总结了为什么TSPhoenix需要一个键值数据库。

在过去的几个月里,我们对YapDatabase进行了压力测试,经历了多次版本升级,多次更改模型。YapDB轻松处理了一切。

要求

  • Xcode 5
  • iOS 7.0 SDK
  • 部署目标 >= iOS 6.1

贡献

我们遵循这个Git分支模型。如果您想向我们发送pull request,请遵循相同的模型。