InboxKit 0.0.6

InboxKit 0.0.6

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Ben Gotow维护。



 
依赖项
FMDB>= 0
AFNetworking~> 2.0
 

InboxKit 0.0.6

Inbox iOS SDK


将 InboxKit 作为框架使用

Inbox Xcode 项目声明了两个框架目标,如果您不感兴趣使用 Cocoapods,则可以在项目中使用这些目标。

  • 通用使用: "Inbox-Mk8" 框架目标与 iOS 7+ 和 Xcode 5 兼容。它使用 Karl Stenerud 组建的 "Real" 框架目标模板。为了构建它,请下载并安装 "Real" 框架模板到 Xcode。这允许您从 "新建项目" 菜单创建 Xcode 框架。不幸的是,这种方法在 Xcode 6 中已损坏,并且可能会被 Xcode 6 的新 Cocoa Touch Framework 取代。

  • 对于 Xcode 6 / iOS 8: "Inbox" 框架目标是 Xcode 6 的 "Cocoa Touch Framework"。这意味着您需要 Xcode 6 来编译框架,并且它只能在针对 iOS 8 及以上版本的应用中使用。我们预计 Xcode 6 将在 Inbox 托管服务广泛发布之前就推出 Beta 版,并计划最终使此框架版本成为唯一版本。

文档

有关入门指南,请参阅 Inbox iOS 文档;有关 Inbox REST API 的信息,请参阅 Inbox API 参考文件。类级文档已通过 AppleDoc 编译并发布到该存储库的 "gh-pages" 分支。

测试和代码审查

要在 Xcode 中运行测试,请从菜单中选择 Product > Test。

要运行 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网络开发代理 可方便地在应用程序运行时检查网络活动。

Navicat for SQLLite 允许应用程序运行时与SQLLite缓存进行交互。



示例应用程序


注意:大多数示例应用程序使用Cocoapods。要运行演示应用程序之一,请使用 cd 进入项目目录,并运行 pod install。如果您以前没有使用Cocoapods,则需要通过执行 sudo gem install cocoapods 来安装它。

EightBall (Swift)

EightBall应用程序会在您的收件箱中显示单个未读主题。当您摇动设备时,它会将其标记为已读并显示另一个线程。

分类

'分类'演示应用程序展示了使用 INModelProvider 显示电子邮件收件箱中的主题,以及使用 INMessageContentView 在自定义视图中显示消息体的用法。

分类操作视频

SnapMail

'SnapMail'演示是一个类似于Snapchat的应用程序,允许发送和接收照片。它不是使用自定义后端,而是使用收件箱——显示主题为'来自*的新快照'的消息,发送快照会向收件人发送附带图片的电子邮件。您可以像使用Snapchat风格的预览交互一样查看附加在“新快照”电子邮件中的图片。

SimpleMail

Simple Mail应用程序使用 INModelProvider 显示收件箱中的主题列表,并允许您归档它们。随着我们开源更多UI组件,SimpleMail将扩展,允许您查看和撰写消息。

核心原则


Inbox iOS SDK的核心有若干设计原则。

  1. 观察模型对象:在Inbox SDK中,模型对象(如消息和线程的类)在修改时广播NSNotifications。显示这些模型的控制(和某些情况下视图)应订阅它们在NSNotificationCenter中,以刷新UI更改。使用NSNotificationCenter API,您可以按如下方式订阅特定对象:

    INContact * contact = <contact being displayed>;
    
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateUI) name:INModelObjectChangedNotification object:contact];
    
  2. 唯一的模型:在任何给定时间,每个模型对象都应该只有一个副本。例如,如果几个电子邮件引用相同的联系人,它们都应该持有对INContact同一实例的引用。这对于确保通过NSNotifications订阅模型的正常工作,以及确保模型更新正确传递到应用程序中非常重要。

    此原则在模型层中通过使用NSMapTable对象缓存强制执行。当从数据库检索模型或从API调用返回模型时,应用程序会对每个对象ID查询对象缓存。如果对象缓存中已存在现有对象,则更新该现有对象并返回它。如果它不在对象缓存中,则将其添加。

  3. 模型提供者:在Inbox SDK中,您通过创建 INModelProvider 实例并定义所需的视图来检索对象(线程、消息等)。模型提供者通过简单的代理API公开结果集,并确保结果尽可能最新。

    使用模型提供程序比发出简单的API请求稍微复杂一些,但实现 INModelProvider 代理协议可以确保您的应用程序能够设计成用户期望的现代邮件应用程序所需的实时、异步更新。目前,INModelProvider 通过API调用并从本地SQLite缓存检索对象。未来,它可能与收件箱通过套接字连接,并在实时将新结果流送到您的应用程序中。实现 INModelProvider 代理协议可以确保您的应用程序将立即支持这些未来的改进。