iOS中的分享菜单有着另外一个名字——活动监视控件,这个名字非常恰当,因为它不仅提供分享功能,同时还可以提供诸如动作之类的其他「服务」。过去这些动作一直都只有系统自带的,比如剪切粘贴、打印等等。但就像iOS 8中的自定义共享选项一样,自定义动作选项也被添加到了其中,它们是全新的扩展性功能的一部分,新的扩展性将允许安装第三方的键盘小工具及其他很多自定义的动作扩展按钮。那么这些扩展动作是如何工作的?它将为我们带来什么呢?

充足的动作

▲ iOS 动作选项的演进。从左至右依次为:iOS 5及更早版本、iOS 6、iOS 8

动作选项第一次出现在 iOS 时还是存在于单调列表按钮中的一部分,仅它提供了很少的视觉区分,同时它也没有很强的扩展性。

当分享选项在 iOS 6 当中变成了网格状的按钮时,动作选项便加入其中。从此,共享选项可以现实其相对应的应用程序色彩斑斓的图标,同时动作选项获得了统一的、灰色的按钮——保存到相机胶卷、通过 AirPrint 打印、拷贝到剪贴板等。但尽管如此,分享和动作选项仍然被放在一起,这样网格状的显示仅仅比列表好出一点点。

iOS 7 开始,分享选项的模样进行了翻新,匹配了 iOS 全新的外观,同时动作选项从灰度按钮被换成了黑白色,并拥有了一行独立的可滚动的列表,想添加多少就有多少。但即便如此,可使用的动作还是非常少。

iOS 8 终于改变了这一切。

动作扩展如何工作

iOS 8 中的扩展性意味着我们不再拘泥于苹果提供的那些默认动作选项,我们不再需要等待 AirPlay 或 AirPrint 的支持,也不再需要关心苹果会不会为第三方产品提供一个系统级别的服务,现在任何应用程序都可以通过安装扩展的方式来增强其本身以及 iOS 的实用性。

所以不需要苹果和微软就「将 Bing 翻译放入 Safari」而签署什么合作协议,微软可以在自己的 Bing 应用内创建一个动作扩展,Bing 翻译就会像原生服务一样出现在 Safari 当中。

而使用一个动作扩展也非常容易。如果你在 Safari 中阅读 iMore,但是你的母语是法语而非英语,你可以点击分享按钮,在动作选项栏横向滑动找到 Bing 翻译扩展,轻松点击便可以将网页翻译成法语。

同时,你还可以按照你的喜好重新排列动作扩展。滚动到动作选项最右端并点击更多按钮,即可将按钮前后挪动以进行排序。这意味着如果你经常使用 1Password 来帮助你输入密码,你可以将它挪动到最前面。这样每次你点开分享菜单的时候它都会在最前面,不再需要你去滑动寻找。

就像插件一样,动作扩展不仅能添加更多应用程序,它还对系统和已经存在的应用添加更多功能性。对「离开Safari - 打开1Password - 用内置浏览器打开或将密码拷贝 - 再回到Safari」的体验说再见吧!

关联阅读:1Password 在 iOS 8 上展示 Touch ID 验证登录及 Safari 扩展功能

自定义 Safari 动作

在 iOS 8 当中,有一些特定的动作扩展是针对 Safari 的。他们叫做自定义 Safari 动作,有两种类型:

  • 有自己界面的动作扩展
  • 没有自己界面的动作扩展

有自己界面的动作扩展如 1Password,比如在你登录 YouTube 的时候会询问你要使用你哪一个 Google 账号(如果你有多个 Google 帐号)。

没有自己界面的动作扩展如 Bing 翻译,在 WWDC 会上我们就见到过,它能即时将网页翻译成其他语言。

开发动作扩展

动作扩展允许开发者将应用内的一个功能,通过系统内建的分享页面提供给其他应用程序或者系统使用。尽管扩展主要以界面控制器的形式出现于 iOS,动作扩展可以使用界面控制器的形态,也可以如自定义 Safari 扩展,没有界面。

标准动作扩展和自定义 Safari 扩展之间的唯一区别在于,Safari 自定义扩展可以使用 JavaScript。他们有完整的文件对象模型 ( DOM, Document Object Model ) 访问权限,这意味着他们可以从网页上获取一个图片,对其进行标注,然后将新图片替换到原始文件的位置。

就像分享扩展一样,动作扩展也拥有激活条件,告诉系统他们可以处理什么样的数据。这样一来,如果一段文字被选取,那么只有那些可以对文字进行编辑的选项会被显示。如果是一张照片被选取,那么可以对照片进行修改的选项就会出现。

苹果已经对开发者提供了很多资源,来帮助他们开发动作扩展:

动作扩展的安全性

iOS 是一个极度重视安全性和隐私的系统,新的动作扩展也不例外。iOS 中,应用程序都在沙盒机制下运行,只允许访问他们内部的文件,只有当用户给予权限的时候才可以访问特定的某个文件或系统功能。这就是为什么应用程序需要「访问相机胶卷」的原因,也是为什么你需要点击「打开…」,这样才使得恶意应用不能访问你的系统或你的个人数据。

iOS 8 扩展性带来的改变是,苹果将一个应用程序的扩展保持在该应用沙盒内部,但是允许 iOS 和其他应用通过 iOS 向这个应用请求功能或信息,被请求的应用程序会再对请求应用或 iOS 提供用户界面、信息或其他功能。

对于动作扩展来说,功能来源方的应用程序是宿主,而你所请求的功能则是容器。比如,如果你正在使用Safari,这就是你的宿主程序。如果你在使用 1Password 来输入密码或者使用 Bing 来进行翻译,这些都是容器。这个机制不仅提供了安全性,还提供了稳定性。(上面例子中,在 iOS 8 下使用 1Password 或 Bing 的扩展功能,都不需要提前运行相应应用或令其在后台运行)

苹果没有详细说明这些的工作原理,但是他们声称使用了与 iOS 其他层面类似的安全技术,自 iOS 7 开始苹果在安全和加密方面下了很多功夫,我相信 iOS 8 新的扩展性会特别安全实用。

小结

动作扩展为 iOS 8 和 iOS 8 应用程序提供了强劲的新功能。要注意的是,目前才是这一功能的最初版本,像多任务一样,动作扩展无疑也会升级。比如,1Password 现在只能在 Safari 中输入密码,但不能在其他应用程序当中输入密码,相信随着 iOS 8 的完善,这些局限性问题会得到解决。可以说,动作扩展的出现,意味着用户能在应用程序间的切换上花更少的时间和精力,这是相当大的进步。