WWDC2022-iOS篇完全解析

2,933 阅读17分钟

背景

Apple于北京时间2022年6月7日举办了WWDC2022,作为一名Apple开发者,不仅仅是为了保持技术敏感度,同时也希望在第一时间将新的内容呈现在大家眼前。本文对发布会内容做了整理归纳,并着重对iOS的新内容进行分析。希望这篇文章对大家有所帮助的同时也给我们的产品带来更多的可能性。

9690f67c1bc2cc62bd8729e5182ef19a

相对于iOS15来说,iOS16的整体变化比较大,尤其是在我们看得见的地方,比如一些UI样式,交互行为和一些新增的功能。下面会按照WWDC的出厂顺序来介绍,其中包含了每个改动点的细节以及个人的理解和后面的展望。

Developer

Xcode相关

新版的Xcode同样也跟新了相关的内容,帮助开发者提高开发效率。

方法吸顶以及代码提示

在之前的版本中,如果方法函数过多超了一屏展示,随着滚动函数名不可见,而新版的Xcode提供了类似TableViewHeader的效果,让方法名和实现名字固定在顶部,方便随时查看和复制。对小屏还是比较友好的。

enter image description here

同样在使用初始化方法的时候如果是支持传入参数的初始化方法也会通过斜体来进行参数提示(Swift专属) enter image description here

Xcode安装体积

新版的Xcode优化了包体积,同时在进行安装的时候可以自定义需要哪些平台,需要哪些模拟器,笔者亲测相比之前的无脑把AppleTV、Apple Watch、ipad等都安装下来的情况来看,整个包体积减少了十几个G左右。对于小存储的MacBook是一个福音。

Xcode编译与调试

根据苹果的描述新版Xcode优化项目的编译速度,得益于更强大的并行编译能力,项目构建速度提升至高可达 25%

  • 改善前:先编译 framework 里的代码,然后生成 module,然后编译 app 里的代码,最终经过链接完成了构建。
  • 改善后:通过提高并发,缩短了构建的关键的路径

enter image description here

同时单元测试的效率也提高了30%

Xcode14 还支持输出编译期间每个阶段的耗时和详细信息,相比之前的只能通过控制台的名字描述要直观不少。 编译耗时

对于LLDB,现在还可以看到执行的过程和信息,对于一些需要长时间跑的命令较为友好,类似于--verbose参数的含义

enter image description here

在新版的Xcode中除了App和系统的日志,同样支持LLDB的日志输出,当时在用LLDB调试的时候发生Crash,便可以到相关路径中找到对应日志。 enter image description here

开发者模式

新版的iOS和Watch OS引入了新的开发者模式,原理和安卓的开发者模式类似,用苹果的话说是为了开发者模式可防止人们无意中在其设备上安装可能有害的软件,并减少开发者专用功能所暴露的攻击媒介。,对于普通人来说确实可以提高安全性,之前只要是加入了开发者账号的手机都可以从Xcode编译运行第三方的App,或者按照企业证书的签名包,而不这些手机主人都是无感的,现在需要手机主人通过多重确认来打开此功能后才可以进行安装非App StoreTestfilght渠道的包。

但是这个对于开发者来说并不友好,首先是调试过程有会多增加一些步骤,而且在自动化测试方面,所有的手机都要先通过命令来打开开发者模式,并且根据苹果的说法,使用命令行进行开关要确保手机没有密码,否则会被拒绝运行。这里笔者也尝试在未打开开发者模式的情况下进行Xcode编译,确实会失败。

enter image description here

笔者预测该功能可能是为后续的第三方App市场做准备,因为现在虽然苹果不支持三方市场,但是普通用户还是可以通过一些三方网站安装重签包,同时他们并不知道这些包会带来潜在的危险,再加上欧盟一些反垄断政策的施压,所以苹果决定逐步开放三方应用市场,这应该就是第一步吧,先让用户意识到这样做可能会有一些危害。

无论是美国的《美国选择与创新法案》、还是欧盟的《数字市场法案》,都要求苹果在App Store之外为用户提供额外的应用下载渠道。现在看来,苹果方面可能已经认为改变欧盟与美国的态度已经不太可能了,那么既然支持侧载或许无法避免,那么让用户更难发现侧载功能的入口就成为了备选项。

LockScreen

锁屏样式

重新修改了锁屏的样式,在优化了时间显示的字体的同时也在锁屏上提供了更多能力,展示更多的信息,并加入了一些新的交互样式,通过在锁屏界面长按来进入锁屏界面的编辑状态,这个动画效果有点类似安卓的编辑桌面的效果。

image

iOS16的锁屏样式可以大致分为两类

  • 动态锁屏 比如在Beta1中可以看到的天气锁屏,依赖于天气App的信息,在点亮屏幕的一瞬间可以在锁定屏幕上动态显示天气的效果,比如雨雪风晴等,持续几秒钟后停止。笔者预测该能力后续会和Livephoto关联起来,实现用户自定义动态照片,毕竟现在的livephoto设置锁屏之后只有在长按才会触发播放,到时候长按的手势会和设置锁屏的手势冲突,所以livephoto必然会变成自动播放,

再长远预测的话也可能后续会把该能力开放给第三方App来定制动态锁屏的图片,类型于现在的天气App。比如QQ音乐的专辑封面,歌手的演唱动图等。目前动态背景只支持锁屏界面,解锁后进入桌面便会停止,估计是处于性能考虑,动态桌面的可能性不大,应该仅限于锁屏。

image

  • 静态照片 iPhone一直可以支持设置静态照片为锁屏壁纸,但是iOS16给静态照片锁屏提供了更多的玩法。
  • 照片随机切换:用户可以选定一组照片来作为锁屏壁纸,类似于幻灯片放映的样式,切换的频率可以设置为 每次点亮每次点击每小时每天

image

  • 照片景深:这个能力算是iOS16更新比较大的,通过机器学习模型将照片中的主体突出,可以遮挡在时间上,这里的主体可以是图片中任何可区分的物体,不仅仅是人像模式的照片。(在实际使用中,经常会失败,beta1还是不够稳定)

image#268px #578px image#292px #574px

  • 表情壁纸:将IPhone输入法中自带的表情进行一定规律的排列组合形成一张壁纸,最多支持输入六个表情。
  • 颜色壁纸:可以定义一些渐变颜色
  • 官方背景图壁纸。一些官方图片,支持景深效果

image#189px #390px

锁屏组件

iOS16在锁屏界面可以展示更多的信息,其中就包括了锁屏小组件的加入。可以看到锁屏顶部分三个区域。

image#270px #577px

  • 顶部:顶部区域是一个小的小组件区域,同时只能容纳一种小组件放置,🇳信息量有限。
  • 中部:中部区域是固定展示时间的区域,不可放置自定义小组件。只能展示时间信息,但是用户可自定义字体(包括阿拉伯文、天成文)和颜色。
  • 底部:底部区域为第二个小组件区域,范围较大,最多可容纳4个正方形(1*1)的小组件。同时支持排列组合。

目前小组件的支持非常有限,目前只能将系统级的App的组件放上去,并不支持第三方App,笔者尝试写了一个小组件,在主屏幕上可以正常添加,但是在锁定屏幕无法使用,猜测两个原因,一是目前是Beta1版可能还没有开放三方App的小组件,后续会陆续优化上来;第二个原因可能是处于性能或者其他因素考虑锁频组件和主屏组件不是一套逻辑,并不互通,但是通过查看Xcode Beta版本的代码,没有看到相关线索,不过WWDC也提到了,一些功能在后续会以API的形式像开发者提供。

image#266px #571px

锁屏通知

iOS16调整了锁屏的样式,增加了锁屏界面所展示的信息和交互,所以希望锁屏界面不要被大量的通知遮挡,因此从新调整了通知推送的位置和出现动画。iOS16之前:通知铺满锁屏,同时新的通知会插到到最上面。从上往下依次排列。iOS16之后:锁屏区域被限定在底部一小块区域,新来的通知会插到第一层,但是默认只展示3个(叠放的形式),想看更多的话跟之前一样,上拉即可。任何新增的通知,包括常驻的音乐播放调都是从下往上增长,通知增长到一定高度就会开始折叠,这样的好处就是可以给锁屏留出空间,不至于被占满。

这样的修改确实可以让锁屏界面看的更整洁,且能让用户看到自己喜欢的锁屏画面,但是带来一个问题是用户想要查看通知内容时候需要多做一步上拉的操作,可能会稍微影响到Push的效果,比如点击率之类的指标。

image

Live Activities

上面说的苹果弱化了通知展示的样式,默认采用了折叠策略给锁屏留出了更大的空间,但是为了让用户实时的追踪想要的信息便推出了 Live Activities 。该控件可以常驻在锁屏界面,且能够实时刷更新的一个UI控件,

image

WWDC上举了一个恰当的例子,比如我在追踪一场比赛,我需要知道实时的比分信息,但是又不方便拿着手机app观看直播,所以支持了 Live Activities 能力的App可以再锁屏界面来实时展示比赛信息,同时不需要解锁屏幕,还有优步的信息。

image#321px #227pximage#334px #228px

这有点类似于锁屏的音乐播放条。同时IOS16针对音乐播放调界面也做UI优化,可以通过点击来实现封面图展开,同时背景设置为封面的魔法色,实现全屏沉浸式播放。但是笔者实测时候并未在beta版上成功使用该功能,SDK中也没有看到相关代码。应该是在后续的版本开放更新。

image#305px #580px

专注模式

苹果去年推出了 专注模式 ,但是专注模式的切换需要到控制中心,或者设置菜单中进行切换,隐藏较深,在这次的iOS16中,苹果将专注模式和锁定屏幕绑定起来,也就是实现专注模式和锁定屏幕 一一对应 的关系,一个锁屏对应一套锁屏组件和一个专注模式。

比如我下图中两个锁定屏幕分别对应两种模式,工作模式可以设置只接受某些App的推送(比如企业微信。WeSing等),忽略某些不重要的通知。右边的游戏模式可以吧比较关注的电量信息放到锁屏,同时屏蔽通知避免游戏误操作。关键是在iOS16上两种模式的切换只要在锁屏上长按就可以进行更改,方便很多。

image#337px #744px

信息App

消息编辑

根据WWDC的描述,信息App带来的三个呼声最高的功能(应该是国外用户)

  • 动态编辑信息:对于已经发送出去的信息,如果发现错别字,可以直接在自己刚刚发送的对话气泡上进行修改,像这样,就不需要再撤回然后重新辑后发送。

image

  • 标记未读(国内玩腻了的)
  • 消息撤回(国内玩腻了的)

ShareApi

iOS15中提到了 SharePlay 的能力,但是当时该能力必须基于FaceTime。在iOS16中,该能力已经扩展的信息App中。笔者认为, SharePlay 的能力后续会形成套单独的SDK(类似于AirPlay的SDK),供第三方App接入,且不依赖Facetim和信息等系统App。这对于音视频的App是有比较大的帮助,可以一起听歌、看视频。但是对于版权的管理要更为严格。

image#389px #472px

语音输入

苹果在很早的版本就支持语音输入,但是有一个弊端就是语音输入和键盘输入是两个独立的过程。而在iOS16中输入文本时,可在语音和触控这两种方式间无缝切换。无需中断听写,照样可用键盘打字、轻点文本栏、移动光标,或插入快速输入建议。 image

CoreML

LiveText

CoreML是苹果早期发布的机型学习API,通过他可训练一些人工智能相关的东西,其中iOS15推出的 LiveText 便是其中之一,他可以让我们对图片里面的一些文字做提取操作,在iOS16中,apple增强了 LiveText 的能力,除了静态图片,还加入了视频帧的支持。 Live Text in Video ,根据WWDC的描述,在播放视频的时候进行暂停,便可以提取当前帧上的文字内容。

image

选中后除了对文字进行复制操作外,iOS16还提供了一些其他的快捷功能,其中包括汇率转换、翻译。更重要的是,实况文本的API已经开发给开发者使用,很快我们就能从app的照片和视频中提取相关的文字信息。

Visual Look Up

也是苹果之前基于机器学习提供的一个能力,可以检测照片中的物体,来识别是什么东西,在iOS16中,该能力被大幅加强,同时集成到了照片App中。用户可以打开一个照片,通过长按,把照片主体拖动出来到相应的App中。(拖出的图片为png图片)

image

该能力已经提供独立的API,目前的Apple的 可立拍 App里面将Core ML的能力运用到视频处理中,大家可以下载体验。

Apple Pay

Apple pay later

类似于国内的京东白条、蚂蚁花呗,不同的是 Apple pay later 只提供4周或者6周的分期还款,且无息。

钥匙共享

通过常用的通讯类app,安全地共享钱包app中的钥匙(智能家居钥匙,汽车钥匙等)。你可以决定钥匙的使用地点和时间,并能随时撤销。

追踪订单

可以查看票据,还能直接在钱包app中追踪你的 Apple Pay 订单。商户可以将订单的相续信息推送到消费者的钱包里

image#304px #601px

Apple Map

增加途经点规划

国内高德百度已经玩了很久的功能,在导航的时候可以在起点和终点之间增加途经点。快车顺风车经常要用的功能。

image#297px #618px

实时公交信息

可以查看公交出行的公交信息,包括公交时间,公交线路,公交价格等,同样也是国内使用了很久的能力。

共享交通工具查看

可以在地图上看到附近的共享汽车、共享滑板车、共享单车等。同样也是国能很多共享单车厂商实现了的能力。

image#307px #554px

Apple TV amp; Apple News

Apple TV 和 Apple News是两个不同的东西,之所以放到一起说是因为他们在iOS16中提供了相同的能力,都新增了体育板块,可以每周免费观看两场比赛,同时可以和iPhone 联动,在锁屏上展示 Live Activities

家长控制

家长控制的粒度更细,除了是否可以启动某个App,还可以详细控制某个App的权限,比如禁止某个App 访问摄像头权限,来避免儿童色情的问题。之后的开发者可能要在权限控制这里做额外的判断。除了允许、拒绝、未决定外,新增了家长控制的枚举条件。

HomeKit

接入了更多智能家居品牌。同时和其他主流品牌一起在HomeKit的基础上创立了新的智能家居协议标准 matter 。可以让智能家居跨平台协同操作。目前已经有一部分厂商支持了 matter

image

CrarPlay

苹果也看出了现在汽车发展的趋势就是大屏幕,而且一辆车往往不止一块屏幕,所以在iOS16上,苹果针对这个现象重新优化了CraePlay,新的CarPlay不仅仅可以通过车机来控制iPhone,还可以通过iPhone来设置车机的主题。 支持新CarPlay的车型将于2023年下半年生产,前期支持的车型为

image

新一代 CarPlay 车载将出类拔萃的 iPhone 体验带入车内。它可为车内所有的驾驶员屏幕提供内容,包括仪表盘在内,让你的爱车和 iPhone 在体验上融为一体。车载的收音机、空调等功能可直接通过 CarPlay 车载来控制。而多种个性化选项,包括小组件以及精选的仪表盘设计,更带来独特的驾驶体验。

总结

以上就是WWDC中关于iOS的相关内容,笔者第一时间更新了iOS16的Beta版本,但也遇到一些问题

  • iOS16官方最低支持到iPhone 8系列,但是iPhone 8更新后,很多功能无法使用,建议使用 iPhoneXs以及以上机型体验。
  • WWDC中提到的大部分功能现在都无法在Beta1中体验。且最新的XcodeBeta中也没有相关的新Api,不过WWDC上也说了,iOS16上的功能会在后续稍晚的时候以API的形式提供。
  • Beta1耗电发热非常夸张,尤其是在锁屏界面。可能还需相关优化,目前手机必须连着电源使用。

文中提到得到一些功能更新虽然和国内开发者关系不大,但是毕竟都是业务层面的东西,底层都是通用的,毕竟技术无国界,也希望能将更新的技术用到自己的项目中,提高用户的产品体验,向用户展示出我们的专业能力和创新能力。希望这篇文章能对iOS开发者和产品同学在后续的技术、产品规划上有一定的帮助。