本文来自爱范儿 iOS应用扩展的历史 很久以前,我们在谈论iOS应用时,指的都是桌面上的图标。点击图标后打开的界面就是iOS应用程序。
全部(以下简称主应用)。对于iOS工程师来说,开发iOS应用程序也是开发这样一部分的一部分。当时的iOS应用程序的结构非常简单,直到iOS 7都是如此。 当然,简单的架构必然有它的局限性。
早期的iOS应用程序很难与系统进行更深层次的交互。从iOS 8开始,苹果开放了iOS应用扩展系统(App Extensions),从根本上改变了上述情况。 iOS应用程序不再只是主要应用程序。
第一批开放的扩展中,最知名的应该是Today Extension(通知中心小部件)和Custom Keyboard Extension(第三方键盘)。 iOS 8 之后,这两类扩展如雨后春笋般涌现。无数类似于快捷启动器和第三方输入法的应用程序已经向我们扑来。当然,他们的成长并不顺利。
到今年 iOS 10 发布时,应用程序扩展已经跌跌撞撞了三年。可用的扩展类型数量已从 6 种增加到 7 种,现在增加到 19 种。
这里面有一些革命性的改进,甚至可以说是这样。从根本上改变了 iOS 应用程序的交互方式。 应用程序扩展的限制 iOS应用程序扩展有很多限制。
我们来谈谈开发人员遇到的最常见的问题。 首先,学习成本比较高。无论是通知中心小部件、第三方键盘,甚至是共享面板的扩展,任何扩展都无法被零设置的用户使用。
这就导致了一个非常尴尬的局面,开发者不得不为用户创建一些使用指南。要知道,iOS 8之后通知中心小部件已经有很多了,但直到现在,我仍然经常看到不添加通知中心小部件的用户。学习成本的增加导致一些新手用户根本无法使用iOS扩展。 其次,部分延伸的入口太深,几乎没有什么用处。
例如,照片扩展的用意非常好。它允许第三方应用程序提供系统照片的照片编辑功能。不过,用户使用起来并不容易: 首先让照片进入编辑状态,然后点击一个看起来像更多的按钮,就会出现一排扩展。如果没有您想要的内容,您仍然需要单击“更多”来添加。
想到这些步骤我就头疼。为什么我不在主应用程序中使用它? 在iOS 10中,通知中心小部件的入口被进一步深化。下拉通知中心默认不显示小组件页面,需要滑动才能使用。
这对于快速启动应用来说可以说是一个严重的打击。 扩展不能独立存在。 iOS 8 刚推出时,这一点遭到了很多人的抱怨。如果你想安装通知中心日历,你必须下载一个主应用程序,它的通知中心小部件就是这个日历。
当然,这并不是一个特别大的问题。大多数应用程序仍然需要一个设置页面。这个主要应用程序长期以来一直扮演着这个角色。
这就导致了一个很奇怪的现象:对于一个专注于扩展的应用程序来说,用户首先看到的是最不重要的设置界面,然后这个设置界面教会用户如何使用应用程序的扩展。 扩展是最大的问题之一。
一般用户可能没有意识到,但开发者却深有体会。也就是说,扩展的性能和稳定性实际上很差。 iOS 为扩展程序运行分配的内存比主应用程序少得多,导致扩展程序经常崩溃。反映到用户层面,诸如“通知中心扩展白费”、“键盘消失”等情况时有发生。
早期的第三方键盘稳定性很差,更换键盘后经常弹出无法弹出的情况。 苹果在开发者文档中明确提到,开发扩展时必须非常小心地使用内存,否则扩展很容易被系统回收,导致扩展崩溃消失。 另一方面,调试iOS扩展一直是开发者的一个烦恼。用于调试iOS扩展的开发工具的稳定性很差。
过去的巨大进步 从iOS 8到iOS 10,扩展系统发生了很多变化,其中一些变化非常令人欣喜。 iOS 9中引入的Network Extension使得iOS上的网络调试成为可能,也催生了最强大的网络工具Surge,而Content Blocker Extension则为AdBlocks等广告拦截扩展提供了技术基础。 iOS 9 的变化中,iOS 扩展最重要的进步是 网络相关的扩展。
这使得当前的iOS应用程序可以完全控制网络并轻松调试、过滤、代理等。 iOS 10的革命 作为开发者,从我个人角度来看,iOS 10最大的变化是扩展系统。这次添加的扩展类型数量可以说是空前的,都是非常具有里程碑意义的改进。
下面我们可以分析其中的一些。 第一个是呼叫目录扩展。 iOS一直被Android嘲笑的重要一点就是它连手机黑名单功能都没有。
现在,通过此扩展,开发人员可以轻松制作类似于手机黑名单的应用程序。简单来说,iOS允许开发者通过这个扩展拦截来电并做一些处理。
这方面可能还有更多想象空间。 第二个是Intents Extension和Intents UI。这两个扩展的名称可能不够明显。其实这两个扩展都来自于SiriKit框架,这个框架是用来做Siri相关的扩展的。
SiriKit向开发者开放了6类服务,包括语音视频通话、发送消息等。也许这不是最完美的结果,但却是Siri开放的一个开始。 然后是通知内容扩展和通知服务扩展,这两个扩展可以进一步增强通知系统。众所周知,iOS推送通知系统是一个强大的设计,可以让应用程序通过统一的服务接收推送消息,而无需在后台运行。
在iOS 8和iOS 9中,推送通知也得到了进一步的改进,引入了交互式通知(通知包含操作按钮)和可以处理用户输入的通知(通知中心直接回复内容)。 在 iOS 10 中, 开发者可以使通知更加灵活。
比如通知的内容可以显示一张图片,甚至可以截取通知中心内容并做一下预处理后再显示给用户(当然只能截取主要内容为app收到的通知),这可用于通知内容的加密,或者媒体内容推送后的下载操作。 接下来是iMessage扩展和贴纸扩展,这些与中国人无关。可以看出,在iOS 10中,苹果非常重视iMessage体验。首先,消息应用程序发生了很大的变化。
苹果增强了它的乐趣,让它更像一个即时通讯软件。 同样在 iOS 10 中, 开发人员可以为 iMessage 创建扩展,用于处理对话场景中的内容。
同时还可以提供iMessage:表情包!是的,这就是贴纸扩展的作用。表情包真的可以拯救世界。就连苹果也见过这个蛋糕。 这个扩展可以说是所有应用扩展中开发成本最低的,因为它没有开发成本。
您所需要做的就是将表情包的内容放入此扩展中,然后发布到App Store。用户可以将表情包下载到他们的 iMessage 中。当然,对于国内用户来说,如果iMessage有用,那么微信该怎么办呢? 哦,对了,iOS 10将允许第三方键盘使用地球键的长按功能,这意味着对于拥有多种输入法的用户来说,这将是一个提高效率的改变。
iOS 10中不好的改变 说了这么多关于iOS 10的好话,终于到了抱怨的时候了。 iOS 10 中的一些变化可能对开发者和用户来说并不是那么有趣。 (以下讨论基于iOS 10.0 Developer Beta 6,正式版发布后可能会有差异) 通知中心小部件 首先是通知中心小部件的变化。
上面已经提到了一点。目前,用户下拉Widget默认在通知中心是不可见的,这提高了使用门槛。 此外,通知中心小部件设计有两种模式:折叠和展开。与之前由开发者控制高度的扩展不同,iOS 10 中通知中心扩展的高度并不是那么自由可调,你必须在两种模式之间切换。
然后是小部件的视觉变化。 iOS 10 中小部件的整体风格是白色。这与iOS 9完全相反。
如果一个扩展需要同时支持iOS 9和iOS 10,对于开发者来说将是一件非常痛苦的事情。 URLScheme 第二个是URLScheme。
说到通知中心扩展,就不得不提这个东西。 URL Scheme 是许多生产力软件的基石,例如 Launcher Center Pro。事实上,苹果对于URLScheme的态度一直是谨慎而暧昧的。
了解LCP历史的人都知道,苹果刚推出时并不允许这种应用,后来慢慢放宽了(其实苹果一直在测试开发者和用户之间的界限)。 在 iOS 9 中,Apple 加强了防止 URL Scheme 滥用的限制。要检测App是否可以打开URLScheme,需要将Scheme添加到白名单中,白名单的限制为50个。
同时,在iOS 9中,当App第一次打开URLScheme时此时会提示用户是否打开,让用户确认进程以增加其安全性。 iOS 10对于快速启动应用来说可以说是一场灾难(或许有点夸张)。首先,使用门槛提高了,快速启动一点也不快。
但更重要的是:苹果在 iOS 10 中删除了所有跳转到“设置”应用的 URL Scheme。 这意味着你无法再跳转到通知中心的蜂窝数据设置界面。虽然你仍然可以用它来打开其他应用程序,但系统设置本身也是快速启动应用程序功能的重要组成部分。
毕竟它原本可以带你到一个路径很深的页面。 正在使用iOS 10 Beta版本的朋友,相信你已经意识到了这一点。这并不是苹果第一次做这样的事情。
早在 iOS 6 中,一些与系统设置相关的 URL Scheme 就被删除了。 在iOS 10 Beta 5中,无法在通知中心小部件以外的扩展(例如键盘扩展和共享扩展)上打开URL Scheme。
不过,这一点在 iOS 10 Beta 6 中得到了改进,被认为是虚惊一场。 结论 总的来说,iOS 扩展自 iOS 8 发布以来已经逐渐成熟,越来越多的扩展正在逐步完善 iOS 应用程序的能力。
在这个过程中我们可以看到,在未来的iOS中,主要应用只是一方面,而对于某些应用来说甚至不是最重要的方面。因为iOS应用程序可以在系统级别的每个角落以扩展的方式与用户交互。 主应用程序将只是iOS应用程序的主干,而扩展系统则是应用程序的肢体。它们在一起是一个整体,共同为iOS应用程序创造了一种新的交互方式。