OvershareKit 1.3.1

OvershareKit 1.3.1

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

Jared Sinclair 维护。



 
依赖于
ADNLogin>= 0
PocketAPI>= 0
 

  • Jared Sinclair 和 Justin Williams

iOS 上的全面分享库。

目录

为什么选择 OvershareKit?

在 iOS 上实现分享功能太过繁琐。UIActivityViewController 的功能过于受限,而自己构建库又太耗时。大多数开发者由于缺乏时间和动力,最终只能选择令人失望的分享选项。

OvershareKit 使您能够轻松地将丰富的分享选项添加到您的 iOS 应用中。一句话,OvershareKit 包含了所有

  • 拥有像素级完美、全色图标的美观分享页面。

  • 许多可调选项,包括令人惊叹的深色模式。

  • 内置对 iOS Twitter 和 Facebook 账户的集成。

  • 内置对 App.net、Instapaper 等热门第三方服务的集成。

  • 完整的跨账户管理,包括身份验证和在密钥链中安全存储凭据。

  • 杀手级文本编辑视图,具有实时 Twitter 语法高亮、Riposte 样式的滑动手势光标导航和自动智能引号。

屏幕截图

提交和新增功能

我们愉快地接受任何为 OvershareKit 社区增加价值的 pull request。错误修复可以在任何分支上提交,但对重要的更改和新功能则必须提交到 dev 分支进行更广泛的测试和审核。我们的日常工作是在 dev 分支上完成的。关注 dev 分支,了解即将发布的功能。

OvershareKit 还有一个公开的 Pivotal Tracker 项目 在此处可用

如何使用 OvershareKit

OvershareKit旨在使简单的使用案例变得无比简单,同时仍然足够灵活,可以扩展到更复杂的需要,而不会在这个过程中出错。

在Xcode项目中包含OvershareKit(见下面的详细要求)之后,开始使用步骤简单至极

1) 创建一个OSKShareableContent实例,最好是通过类似于contentFromURL:等便利的类级别构造函数之一

2) 通过其中一个presentActivitySheetForContent:方法将此可分享内容传递给OSKPresentationManager

3) 没有第3步。

OvershareKit与UIActivityViewController比较

我们经常被问及为什么有人会使用OvershareKit而不是UIActivityViewController(UIAVC)和UIActivity。UIAVC非常适合那些知道永远不需要以下功能的app

  1. 不需要集成超过一个或两个第三方服务。
  2. 不需要调整活动表和分享界面的UI。
  3. 不介意为每种分享类型提供独立的内容(例如电子邮件与短信等)。
  4. 不介意在同一个表中拥有多个项目(如“文本复制”与“链接复制”)。
  5. 不介意所有非系统提供的活动都使用无聊的单色图标。

很多app都无法舒适地适应这些限制,这就是为什么我们制作了OvershareKit。

UIAVC和OvershareKit之间最重要的区别在于内容结构。UIAVC使用无结构的内容数组(包含一或多个抓袋中的对象,通常是字符串、图像和URL)。UIAVC允许每个UIActivity决定针对这些对象中的哪些进行处理,以及如何处理。这种API设计的不足之处是,活动对分享会话的上下文一无所知。例如,从Instagram帖子生成的电子邮件格式应该与从RSS文章生成的电子邮件格式有很大不同。但使用UIAVC,没有简单的方法来传达这种上下文。最重要的是,如果要让系统提供的电子邮件活动得到替代,根本不可能使用UIAVC来做到这一点。

活动不应该被赋予如此多的责任来处理内容。内容应在将其交给活动之前准备好。此外,内容应按适用于每种活动的方式进行格式化。

这就是为什么OvershareKit使用一个充满许多种类的OSKShareableContentItemOSKShareableContent实例。这种API设计允许您的应用中了解上下文的部分在将它们交给OvershareKit分享会话之前准备所有的OSKShareableContentItems类型。这结果为用户提供更满意的分享体验,并减少了开发者面临的整体麻烦。

架构

OvershareKit有很多类,但以下是一些主要参与者

  • OSKPresentationManager: 这个单例实例管理OvershareKit的用户界面层。这是您访问以显示活动表(分享表)的类。您还可以通过四个代理来自定义OvershareKit的UI,每种代理用于不同的自定义目的:样式代理、颜色代理、本地化代理和视图控制器代理。如果您已经喜欢了OvershareKit的默认外观和感觉,那么您可能不需要实现任何这些代理。

  • OSKActivitiesManager: 这个单例实例处理分享活动模型层面的逻辑。除非您正在编写自己的视图控制器,否则您可能不太需要访问这个类(除了提供特定于应用程序的第三方认证,见下文认证部分)。

  • OSKActivity: 这是一个半抽象的基类,是OvershareKit的核心。所有共享活动都继承自它。OvershareKit自带大量的内置OSKActivity子类。你也可以轻松地编写自己的子类。活动通过很多必需的方法提供了它们执行任务的重要信息。

  • OSKShareableContent: 是传递可共享内容的最高级OvershareKit模型对象。它的唯一目的是容纳OSKShareableContentItem的子类,从而使单条方法参数中传递多种内容变得容易。

  • OSKShareableContentItem: 以结构化、可读、可移植的方式进行用户数据的表示。它是一个具有多个子类的抽象基类。由于每种OSKActivity需要不同类型的数据和元数据,因此针对每个可能的类型都存在一个OSKShareableContentItem子类。就像UINavigationItemUITabBarItem一样看待OSKShareableContentItem。导航控制器和标签栏控制器使用这些项来保持标题和工具栏项的更改与子视图控制器更改保持一致。这是一个方便的模式,也对我们很有用。OSKShareableContent(见上文)有许多像emailItemmicroblogPostItemwebBrowserItem等子类的属性。

  • OSKManagedAccount: 在OvershareKit中,第三方账户(如App.net账户)通过OSKManagedAccount实例表示。OvershareKit管理这些账户的创建、认证和存储。这个类不应被继承。OvershareKit不允许为在系统级别管理的服务(例如Twitter或Facebook)创建管理账户。

  • OSKManagedAccountStore: 这个单例实例负责存储和组织与第三方服务关联的活动所用的所有OSKManagedAccounts。

  • OSKSystemAccountStore: 这个单例实例负责访问系统级别的账户,如Twitter和Facebook。

认证

大部分情况下,OvershareKit会自己处理认证的所有方面。有几项重要例外,每一个应用都需要进行配置以处理这些异常。

应用程序特定凭证

某些第三方服务要求应用程序特定凭证以进行用户操作的认证。与OvershareKit一起提供的示例应用已配置为在DEBUG编译标志设置为1时使用一些测试应用的凭证。

你不应该在生产应用中发送OvershareKit的测试凭证。它们可以在任何时候被撤销。如果发生这种情况,我们将不对任何后果负责。请参阅下文几个段落以获取有关设置应用程序凭证的更多信息。

你可以通过OSKActivitiesManagercustomizationsDelegate属性提供你应用的凭证。这些凭证由OSKApplicationCredential实例表示。

目前需要应用程序凭证的服务列表如下:

  • App.net: App.net帖子需要一个应用程序ID。更多信息请访问http://developers.app.net。你需要创建一个开发者级别的账户来注册你的应用(目前每年99美元美元)。不要忘记:在App.net注册你的应用也可能使你有资格参加开发者激励计划($$$)。请联系App.net获取更多信息。你还需要为OvershareKit注册默认的重定向URI:http://localhost:8000。他们要求的其他应用程序特定细节(如捆绑标识符)是唯一的,针对你已注册的应用程序。注意:如果你想让你的用户也能通过App.net Passport应用程序进行登录,你需要遵循App.net为设置自定义URL方案提供的说明。

  • 口袋币:访问http://getpocket.com/developer/获取更多信息。除了注册您的应用外,您还需要按照他们的指示设置自定义URL方案,包括下载Pocket iOS SDK。不设置此URL方案则无法登录口袋币。

  • Facebook:Facebook的iOS认证需求包括传递应用程序ID。在http://developers.facebook.com/注册您的应用。

  • 可读性:您需要通过新的开发者账号注册您的应用来获取应用程序密钥和密钥。访问http://www.readability.com获取更多信息。

  • Google Plus:您需要通过Google Plus注册您的应用来获取应用程序密钥。

如果您对此设置过程有任何疑问,请提问

URL方案

  • App.net Passport:App.net Passport应用程序允许用户在不输入用户名和密码的情况下登录。此选项在应用程序安装时由OvershareKit自动启用。您需要将App.net Login SDK包含到您的项目中。您还需要根据App.net的指示设置自定义URL方案,以使此方法能够正常运作。如果您不设置URL方案,用户将通过OvershareKit的web视图被提示登录。

  • 口袋币:口袋币认证需要按照他们的要求设置自定义URL方案。您还需要包含Pocket-iOS-SDK以启用口袋币登录。

依赖

OvershareKit几乎是独立的库。所有类别和类都使用OSK前缀正确命名空间,以避免冲突。

有两个必需的外部库,包含在Depedencies目录中的git子模块中

Depedencies目录中的Google Plus框架不是一个子模块。

应用内购买

您可以选择配置某些活动类型需要应用内购买。OvershareKit不处理购买或收据验证,但它处理在适当时期展示您自定义购买视图控制器的逻辑。即使尚未购买,OvershareKit也将为活动图标添加可爱的小价格标签。有关详细信息,请参阅OSKActivitiesManagerOSKPurchasingViewController的头文件。

更多内容

OvershareKit有许多可以使用的功能。所有主要和许多次要类都已使用appledoc语法进行了文档记录。更多文档即将到来。如果您有疑问,请与我们联系。

贡献者

Jared Sinclair

Jared Sinclair

主要作者和API设计
Twitter: @jaredsinclair
App.net: @jaredsinclair

Jared是一位独立的iOS应用设计师和开发者。他创造出像Unread RSS阅读器Riposte for App.net这样的应用。

Justin Williams

Justin Williams

API设计和iOS账号集成
Twitter: @justin
App.net: @justin

Justin是一家位于Second Gear的独立iOS和Mac应用开发者。他在技术事件中是一位频繁的公开演讲者。

使用OvershareKit的应用

最新添加的应用位于列表顶部。

nvNotes
专注于写作的专业记事应用。
网站 | App Store

未读
RSS阅读器
由Jared Sinclair开发
网站 | App Store

Redd
适用于iOS 7的Reddit客户端。
由Craig Merchant开发
网站 | App Store

Sunlit
使用App.net共享照片和故事。
由Manton Reece和Jonathan Hays开发
网站 | App Store

App.net - 推送通知
使用App.net Broadcast不再错过重要新闻。
由App.net开发
网站 | App Store

致谢

OvershareKit包含其他开源代码的部分,有的是完整包含,有的是经过简化或重构。以下项目非常有帮助

  • DerpKit: 由Steve Streza开发。 应包含在Foundation和其他框架中的Objective-C类别和子类 GitHub地址

  • AFNetworking: 由Mattt Thompson开发。 一个 delightful iOS和OS X网络框架 GitHub地址

  • UIColor-Utilities: 由Erica Sadun开发。 iPhone上UIColor的实用工具 GitHub地址

  • TwitterText: 由Twitter开发。 Twitter文本处理库的Objective-C实现 GitHub地址

  • Gist 1102091: 由Ole Zorn开发。 从黑色带alpha的主图像创建任意颜色的图标(iOS) GitHub地址

  • UIDevice-Hardware: 由InderKumarRathmore开发。 这个类别帮助检查[iOS设备]的硬件版本 GitHub地址

  • RPSTPasswordManagementAppService: 由Riposte LLC开发。 一个iOS实用类,可以通过URL方案启动1Password GitHub地址

许可协议

MIT许可协议(MIT)

任何获得本软件及其相关文档文件(以下称为“软件”)副本的人都有权免费处理该软件,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、特许经营和/或销售软件副本的权利,并允许将软件提供给其他人的人员进行上述操作,前提是满足以下条件

在上面的版权声明和本许可协议应包含在软件的所有副本或主要部分中。

软件基于“现状”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、针对特定用途的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任基于合同、侵权或其他原因,无论该责任产生于、因、或者与软件或软件的使用或其他操作有关。