iOS 10 应用扩展的剧变,对你的 iPhone 有什么影响?
A 君注:下个月就是苹果发布会,iOS 10 也发布在即。iOS 10 的诸多变化中,应用扩展便是一大重点。
今天 AppSo 邀请到 Pin 的开发者钟颖,为你深度解析 iOS 系统拓展的过去、现在和未来。Pin 是一款强大的 iOS 剪贴板扩展,可以点这里看详细评测。
iOS 应用扩展的历史
很久很久以前,我们在谈论 iOS 应用的时候,指的是桌面上那个图标,点击图标后打开的界面,就是 iOS 应用的全部(以下简称主应用)。对 iOS 工程师而言,开发 iOS 应用也就是开发这样一个部分,那个时候的 iOS 应用结构十分单纯,一直到 iOS 7 都是这样。
当然简单的架构必然有其局限性,早期 iOS 应用要想和系统有更深的交互可谓捉襟见肘。从 iOS 8
开始,苹果开放了 iOS 的应用扩展系统(App Extensions
),这从根本上改变了上述的状况,iOS 应用变得不再仅仅是主应用。
在第一批开放的扩展中,最被我们熟知的应该是 Today Extension(通知中心小部件)和 Custom Keyboard Extension(第三方键盘)。iOS 8 之后这两类扩展犹如雨后春笋般茁壮成长,无数类似于快捷启动器和第三方输入法的应用扑向了我们,当然它们的成长并不顺利。
到今年 iOS 10 发布,应用扩展已经磕磕绊绊地走过了三个年头,可使用的扩展类型也有六七种变成了现在的 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 中最大的变化就是对扩展系统的改造。本次增加的扩展类型之多可以说史无前例,并且都是非常具有里程碑意义的改进。下面我们可以分析其中的几个。
首先是 Call Directory Extension,一直以来,iOS 被 Android 嘲笑很重要的一个点就是:连电话黑名单功能都没有。现在,利用这个扩展,开发者可以很轻松地做出类似于电话黑名单的应用。简单来说,iOS 允许开发者通过这个扩展拦截来电,并作出一些处理,这一块可能会有更多的想象空间。
其次是 Intents Extension 和 Intents UI,这两个扩展的名字可能不够明显,其实这两个扩展出自 SiriKit 框架,它是用来做 Siri 相关的扩展的。SiriKit 为开发者开放了包括语音和视频通话
、发送消息
等在内的 6 类服务。可能这并不是最完美的结果,但却是 Siri 走向开放的一个开始。
然后是 Notification Content Extension 和 Notification Service Extension,这两个扩展能进一步增强通知系统。众所周知,iOS 的推送通知系统是一个强大的设计,可以让应用不运行在后台的情况下,通过统一的服务收到推送消息。
在 iOS 8 和 iOS 9,推送通知也得到了进一步的提升,推出了可交互的通知(通知包含操作按钮)以及可以处理用户输入的通知(通知中心直接回复内容)。
在 iOS 10,开发者可以让通知更加灵活,例如通知的内容可以展现一个图片,甚至将通知中心内容拦截下来,做一个预处理之后再显示给用户(当然只能拦截主应用收到的通知),这可用作通知内容的加密,或者媒体内容推送后的下载操作。
接下来就是对中国人无关痛痒的 iMessage Extension 和 Sticker Extension。可以看出在 iOS 10,苹果非常重视 iMessage 的体验。首先,信息这个应用有了很大的变化,苹果增强了其趣味性,让它更加像是一个 IM 软件。
同时在 iOS 10,开发者可以为 iMessage 建立扩展,可以用于处理会话场景中的内容。同时还可以为 iMessage 提供:表情包
!没错,这就是 Sticker Extension 做的事情,表情包真是拯救世界呀,连苹果都看到这个蛋糕了。
这个扩展可以说是所有的应用扩展中开发成本最低的,因为它没有开发成本。你需要做的仅仅就是把表情包的内容放到这个扩展里面,然后就可以发布到 App Store,用户可以下载这个表情包到自己的 iMessage 上面。当然对国内用户而言,如果 iMessage 有用的话,那要微信做什么。
哦顺带提一下,iOS 10 将允许第三方键盘使用地球键
的长按功能,这意味着对输入法多的用户而言,将是个效率提升的变化。
iOS 10 的糟糕变化
说了那么多 iOS 10 的好话,终于到了吐槽时间。iOS 10 的一些变化,对开发者和用户而言,可能并不是那么有趣的。(下面的讨论都基于 iOS 10.0 Developer Beta 6,正式版发布之后可能有出入)
通知中心小部件
首先是通知中心小部件
的改变,上面已经提到过一点了,目前用户下拉通知中心默认是不会看到小部件的,这提高了使用门槛。
另外,通知中心小部件被设计成 2 种模式:折叠和展开。与之前扩展的高度由开发者控制不同,iOS 10 里面通知中心扩展的高度调节没有那么自由,你得在这两种模式之间切换。
然后就是小部件视觉的变化,iOS 10 里小部件的整体风格是白色。这与 iOS 9 的截然相反,如果一个扩展要同时支持 iOS 9 和 iOS 10,对开发者而言将会是一件很痛苦的事。
URL Scheme
其次是 URL Scheme,提到通知中心扩展,就不得不提到这个东西。URL Scheme 是很多效率类软件的基石,比如 Launcher Center Pro。其实苹果对 URL Scheme 的态度一直是谨慎和暧昧的。了解 LCP 历史的都知道,这个应用上线之初,苹果可是不允许的,后来才慢慢放开了(其实苹果也一直在试探开发者和用户的边界)。
在 iOS 9,苹果加强了对预防 URL Scheme 滥用的限制,app 检测是否可以打开 URL Scheme 需要将 Scheme 添加到
白名单
,而白名单的限制是 50 个。同时在 iOS 9,一个 app 在第一次打开一个 URL Scheme 的时候,是会提示给用户是否要打开,让用户确认的过程增加了其安全性。
iOS 10 可以说是快捷启动类应用的灾难(可能有一点点夸张),首先是使用门槛的提高,让快捷启动根本就不快捷。不过更重要的是:iOS 10 里面苹果去掉了所有跳转到设置应用的 URL Scheme。
这意味着你再也无法在通知中心跳转到蜂窝数据设置界面,虽然你还是能用来打开其他 app,但系统设置
本身也是快捷启动类应用很重要的一部分功能,毕竟它原本能把你带到路径很深的页面里去。
用 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 应用全新的交互方式。
本文由让手机更好用的 AppSo 原创出品,关注微信号 appsolution,回复「剪贴」,告诉你苹果重点推荐的剪贴板神器,到底有多好用。