详解 iOS 8 的动作扩展

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

[[115926]]

本文转自少数派,英文原文Action extensions in iOS 8: Explained,原作者Rene Ritchie

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 ) 访问权限,这意味着他们可以从网页上获取一个图片,对其进行标注,然后将新图片替换到原始文件的位置。

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

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

WWDC 2014 为iOS 和 OS X创建扩展,第二部分

苹果(预发布)扩展性文档

动作扩展的安全性

[[115927]]

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 的完善,这些局限性问题会得到解决。可以说,动作扩展的出现,意味着用户能在应用程序间的切换上花更少的时间和精力,这是相当大的进步。

责任编辑:闫佳明 来源: cocoachina
相关推荐

2009-03-16 09:16:13

行为扩展WCF.NET

2009-09-21 16:59:29

Array扩展

2015-02-04 09:57:48

ActioniOS8

2009-02-23 14:17:00

include指令动作

2011-11-17 13:38:36

2009-06-06 18:47:18

JSP动作

2021-11-29 10:24:56

WasmEnvoy 负载均衡

2009-04-21 13:14:33

SilverlightWPF扩展

2011-11-16 15:14:57

AdobeAIRiOS设备

2009-06-19 18:49:07

ibmdwLotus

2011-08-08 17:39:37

Objective_C继承机制

2010-01-21 10:48:18

VB.NET扩展方法

2019-04-23 12:10:00

前端开发编程

2010-01-12 09:11:18

Visual StudVisual Stud

2022-11-24 13:05:27

ClangiOS

2012-04-04 11:36:40

iOS

2014-04-16 07:43:31

Java 8JRE

2023-04-12 08:00:34

Dubbo分布式服务

2009-10-19 15:14:48

aspx扩展

2010-07-02 09:25:37

.NET 4.0可扩展
点赞
收藏

51CTO技术栈公众号