iOS 10应用扩展的剧变,对你的iPhone有什么影响?
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应用全新的交互方式。
-
iOS10怎么降级?iOS10降级iOS9教程
升级iOS10之后很卡想降级怎么办?iOS 10怎么降级到iOS 9呢?由于iOS 10刚发布,稳定性肯定没那么高,耗电、不流畅、APP不兼容等都是有可能的,那么iOS 10如何降级呢?用爱思助手一键刷机就可以轻松降级到iOS 9系统了。iOS 10降级教程1、下载安装最新版爱思助手,并且用数据线连接电脑。2、把设备进入恢复模式,点击爱思助手上方的“刷机越狱”进入刷机界面。3、选择iOS 9.3.2系统,然后点击立即刷机即可。等待刷机完成,即可降级到...
-
九九八十一难:iOS 应用扩展经历了如此多的历程
早期 iOS 应用和系统之间的关系非常简单,主屏左面上点开那个 App 图标,那就是应用的全部。从 iOS 8 开始,苹果开放 iOS 的应用扩展系统(App Extensions),从根本上改变了 iOS 系统的开放性问题,此后 iOS 应用在每个人的 iPhone 里,有了更多发挥的舞台,这就是我们经常说的“开放性”。苹果以完全不同于安卓系统的扩展道路,不断让开发者甚至用户“扩入其中...
-
iOS 11.2如何降级?
iOS11.2作为最新的系统,部分旧设备升级后难免会卡顿、反应迟缓、发热、耗电等各种问题。如果你升级之后发现严重影响你的日常使用,那iOS 11.2怎么降级呢?降级可以通过爱思助手刷机,手机连接爱思助手后自动匹配对应可刷固件,可以避免不知道刷什么固件的烦恼。下面是降级详细步骤。降级前备份重要数据因为保资料降级刷机之后是可能导致设备无法开机的或者开机之后资料、应用/功能显示不正常的情况,所以降级不建议保留用户资料刷...
-
iOS11备份资料降级到iOS10无法恢复怎么办
因为系统限制,在全恢复数据时,高iOS版本的全备份文件不能恢复到低iOS版本的设备中;所以您在iOS11时使用爱思助手“全备份设备”功能备份了设备资料,然后降级到iOS10.3.2后无法将此备份恢复到iOS10.3.2的设备中。解决方法一:重新使用爱思助手升级到iOS11后再全恢复数据如果仍想降级iOS10.3.x,请参考方法二解决方法二:将全备份文件中资料分类提取出来恢复到设备中此方法可以将备份中的 照片、通讯录、备忘录、Safari书签 导出...
-
iOS10都有哪些常见问题?如何解决
如果你的iPhone和iPad更新iOS10系统之后出现了问题,请不要惊慌,这里有很多方法来帮你解决,当你看过这个指南之后会让你能充分的体验操作系统。