Inbox Xcode项目声明了两个框架目标,您可以在项目中使用这些目标,如果您不打算使用CocoaPods。
通用使用:Inbox-Mk8
框架目标是兼容iOS 7+和Xcode 5的,它使用了Karl Stenerud组装的“真实”框架目标模板。要构建它,请下载并安装“真实”框架模板到Xcode中。这使得您可以通过“新建项目”菜单创建Xcode框架。不幸的是,这种方法在Xcode 6中损坏,很可能会被Xcode 6的新Cocoa Touch Framework替代。
针对Xcode 6 / iOS 8:Inbox
框架目标是一个**Xcode 6 "Cocoa Touch Framework"**。这意味着您需要Xcode 6来编译框架,并且它只能用于目标iOS 8及更高版本的app。我们预计Xcode 6在Inbox托管服务的广泛发布之前将不再处于测试版,并计划让这最终成为框架的唯一版本。
查阅Inbox iOS文档以获取入门指南,以及Inbox API参考以获取关于Inbox的REST API的信息。类级文档已使用AppleDoc编译,并发布在此存储库的gh-pages
分支上。
在Xcode中运行测试,请从菜单中选择产品 > 测试。
要运行OCLint,请选择OCLint目标并确保您已安装OCLint。 下载它并按照安装说明将其添加到您的$PATH。OCLint非常可定制,我们将在未来用它来做静态分析,超出了Xcode的分析器所能提供的范围。查看这篇文章以了解OClint能做什么的一些示例。
Xcode DocSet格式
appledoc --include ./Documentation/. --index-desc ./Documentation/index-template.txt -o ./ -p "Inbox iOS SDK Documentation" -v 1.0 -c "Inbox App, Inc." --company-id com.inbox.ios -d -n --docset-bundle-id com.inbox.ios --docset-bundle-name "Inbox iOS SDK Documentation" --ignore=JSON --docset-copyright 2014 ./Inbox
HTML格式
appledoc --include ./Documentation/. --no-create-docset --index-desc ./Documentation/index-template.txt -o ./ -p "Inbox iOS SDK Documentation" -v 1.0 -c "Inbox App, Inc." --company-id com.inbox.ios --ignore=JSON ./Inbox
Charles Web 开发代理使您可以在应用程序运行时轻松检查网络活动。
Navicat for SQLite允许您在应用程序运行时与 SQLite 缓存进行交互。
注意:所有示例应用程序都使用 Cocoapods。要运行其中一个演示应用程序,请将
cd
切换到项目目录并运行pod install
。如果您以前没有使用过 Cocoapods,您需要通过执行sudo gem install cocoapods
来安装它。
'审查' 演示应用程序展示了使用 INModelProvider
来显示您的邮箱中的线程和 INMessageContentView
在自定义视图中显示消息体的使用。
'快照邮件' 演示是一个 Snapchat 样式的应用程序,允许您发送和接收照片。它不使用自定义后端,而是使用您的收件箱——显示主题为 'New snap from*' 的邮件,发送快照将向收件人发送带有图像的电子邮件。您可以通过 Snapchat 风格的预览交互查看 'New Snap' 邮件中附加的图像。
简单邮件应用程序显示您收件箱中的线程列表,并允许您存档它们。随着我们开源更多 UI 组件,简单邮件将允许您查看和编写消息。
Inbox iOS SDK 核心中有几个核心设计原则。
观察模型对象:在 Inbox SDK 中,当模型对象(例如消息和线程的类)被修改时,会广播 NSNotifications。显式这些模型的控制器(以及在某些情况下视图)应该在 NSNotificationCenter 中订阅,以便在发生更改时刷新 UI。通过使用 NSNotificationCenter API,您可以像这样订阅特定的对象。
INContact * contact = <contact being displayed>;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateUI) name:INModelObjectChangedNotification object:contact];
唯一的模型:在任何时候都应该只有一个模型对象副本。例如,如果有几封电子邮件引用同一联系人,它们都应该持有对同一个 INContact 实例的引用。这对于确保通过 NSNotifications 订阅模型有效,并且模型更新可以正确传播到应用程序中非常重要。
此原则通过使用 NSMapTable 对象缓存来在模型层强制执行。当从数据库检索模型或从 API 调用中返回模型时,应用程序将查询对象缓存中的每个对象 ID。如果该对象已在对象缓存中存在,则更新并返回现有对象。如果它不在对象缓存中,则添加它。
模型提供者:在 Inbox SDK 中,您通过创建 INModelProvider
的实例并定义您想要的视图来获取对象(线程、消息等)。模型提供者通过简单的代理 API 揭示结果集,并确保结果尽可能是最新的。
使用模型提供程序比发出简单的API请求稍微复杂一些,但实现INModelProvider
代理协议确保您的应用适用于用户期望的现代邮件应用中的实时、异步更新。目前,INModelProvider
通过API调用从本地SQLite缓存检索对象。将来,它可能通过套接字连接到收件箱并以实时流的方式将新结果传输到您的应用。实现INModelProvider
代理协议确保您的应用将立即支持这些未来的改进。