App Extensions - 应用扩展程序

应用扩展程序会增加您的影响力
通过应用扩展程序,您可以将自定义功能和内容扩展到应用之外,并在用户与其他应用或系统进行交互时将其提供给用户。

您可以创建应用程序扩展以启用特定任务。例如,要让用户从Web浏览器发布到您的社交服务,您可以提供共享扩展。或者,为了让用户了解自己喜欢的团队,您可以提供一个今日窗口小部件,在通知中心显示当前的体育比分。您甚至可以创建一个应用程序扩展,提供用户可以使用的自定义键盘来代替iOS系统键盘。

主要对App Extension进行介绍。请继续往下看:

App Extension的介绍

官方给的说法是:App Extension可以让你扩展你的APP的自定义功能和内容,使用户可以在与其他应用或者系统进行互动的时候去使用它。翻译的不一定准确,这样说可能会好理解:我们平时看到的Widget、微信和QQ的share等等,都是App Extension,下图是一些例子:


屏幕快照 2019-06-02 下午12.05.33.png

其实就是我们经常看到的Widget,但是Widget只是Today Extension,除了Today Extension,还有很多。

一个支持扩展的系统区域叫做一个extension point(扩展点)。每个扩展点的扩展都有自己独有的使用方法和API。你可以根据你的需求来选择不同的扩展。官方API里面提出了一个名词叫:Host app,我们可以把它理解为宿主的App也就是提供应用扩展界面显示或者功能的App。还有一个container app,我们可以把它理解为容器App,就像上图的微信share extension,容器app就是微信。

扩展和app不同,扩展无法单独上架AppStore。尽管你必须使用个app来包含并且分发你的extension,extension也是一个单独的二进制文件,独立于用于传递和分发的container app。

你可以通过File--->New --->Target来创建Extension,它和其他的target一样,它和你的app project组合成为一个产品。


屏幕快照 2019-06-02 下午12.08.00.png
屏幕快照 2019-06-02 下午12.08.21.png

一个app可以有一个扩展,也可以有多个扩展。最好的创建扩展的方式就是通过Xcode提供的Extension种类选择自己需要的来创建,里面包含了必要的API以及方法实现。

如果你想让用户去使用你的扩展,那么就需要把你的containing app发布到AppStore,当用户安装了你的Containing app,扩展也就安装了。不同的扩展启动的方式也不一样,例如Today Extension,你需要Widget来展示到你的通知中心。扩展也不要乱用,扩展的最佳用户体验从来都是希望用户操作更精简、更快速,并且专注于单个任务。

Extension的种类

我们可以在Xcode的File--->New--->Target里面看到不同平台的Extension,包括iOS、watchOS、tvOS、macOS等等。这里主要介绍iOS,主要包括以下几种Extensions:

1.Action Extension:动作扩展,在另一个应用程序的上下文中操作或者查看内容

2.Audio Unit Extension:音频单元扩展

3.Broadcast UI Extension:广播UI 扩展

4.Broadcast Upload Extension:广播上传扩展

5.Call Directory Extension:呼叫目录扩展

6.Content Blocker Extension:内容拦截器扩展

7.Custom Keyboard Extension:键盘扩展,例如第三方的键盘,搜狗输入法,百度输入法等。

8.iMessage Extension:消息的扩展

9.Intents Extension:Intents扩展

10.Intents UI Extension:Intents UI扩展

11.Notification Content Extension:通知内容扩展

12.Notification Service Extension:通知服务扩展

13.Photo Editing Extension:图片编辑扩展,在照片app中编辑照片或者视频

14.Share Extension:分享扩展,发布一个共享网站或者与其他应用共享内容。

15.Shared Links Extension:分享链接扩展

16.Spotlight Index Extension:Spotlight 索引扩展

17.Sticker Pack Extension:贴纸包扩展

18.Today Extension:Today扩展,可以快速获取更新或者在通知中心的近日视图中执行一项快速任务。

Xcode和App Store帮助您创建和交付App Extensions

应用扩展程序与应用程序不同。虽然您必须使用应用程序来包含和传递扩展,但每个扩展都是一个独立的二进制文件,它独立于用于传递扩展的应用程序而运行。
您可以通过向应用添加新target来创建应用扩展程序。与任何Target一样,扩展Target指定组合在应用项目中构建产品的设置和文件。您可以向单个应用添加多个扩展Target(包含一个或多个扩展的应用称为包含应用)。
开始开发应用扩展程序的最佳方法是使用Xcode为两个平台上的每个扩展点提供的模板之一。每个模板都包含特定于扩展点的实现文件和设置,并生成一个单独的二进制文件,该二进制文件将添加到包含应用程序的包中。

要向用户分发应用扩展程序,请将包含应用程序提交到App Store。当用户安装包含应用程序时,还会安装其包含的扩展程序。

安装应用扩展程序后,用户必须采取措施才能启用它。通常,用户可以在其当前任务的上下文中启用扩展。例如,如果您的扩展程序是“今日”窗口小部件,则用户可以编辑“通知中心”中的“今日”视图以启用扩展程序。在其他情况下,用户可以使用“设置”(在iOS中)或“系统偏好设置”(在macOS中)来启用和管理他们安装的扩展程序。

用户体验不同上下文中的应用扩展

虽然每种类型的应用扩展程序都支持不同类型的任务,但是大多数扩展程序都有一些用户体验部分。在考虑设计扩展时,了解所选扩展点的用户体验非常重要。从较高的层面来说,所有扩展的最佳用户体验都是快速,简化并专注于单个任务。

用户通过与某些系统提供的用户界面(UI)交互来打开您的应用扩展程序。例如,用户通过激活应用程序中系统提供的“共享”按钮并从显示的列表中选择扩展名来访问“共享”扩展。

虽然大多数应用扩展程序至少提供了一些自定义UI元素,但用户在输入扩展程序之前不会看到自定义用户界面。当用户输入您的扩展程序时,您的自定义用户界面可以帮助向他们展示他们正在转移到新的上下文中。由于用户可以将您的扩展程序与当前应用程序区分开来,因此他们可以欣赏您提供的独特功能。用户将扩展意识视为单独的实体也意味着他们可以识别和删除行为不当或效果不佳的扩展。

为了让用户顺利过渡到您的应用扩展程序,您通常希望平衡自定义设计与与扩展点关联的UI。例如,最好让您的小部件看起来像今天视图中所属的小部件。同样,在您的照片编辑扩展程序中,它可以很好地创建与iOS中的照片协调的UI。

注意
即使您的应用扩展程序未显示任何自定义用户界面(图标除外),用户仍然了解您的扩展程序与当前应用程序不同,因为他们采取了特定操作来激活它。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355

推荐阅读更多精彩内容