每年 WWDC 都会带来新的系统,新系统带来的新特性往往需要新的系统框架支持,或者是之前系统中未开放给开发者的功能。因此每年 WWDC 都会有新的系统框架发布,让开发者也可以方便的使用新系统的特性开发自己的APP。下面列出的就是今年 WWDC 23 上新增的系统框架,以及个人(毒舌)点评。
Cinematic
iOS 17.0+
iPadOS 17.0+
macOS 14.0+
Mac Catalyst 17.0+
tvOS 17.0+
Apple 在 iPhone 13 上首次带来了电影效果,之后该模式一直都是系统相机独占的功能。今年 Apple 将电影效果的拍摄、编辑能力下放给了所有第三方 App 。通过 Cinematic 框架,第三方 APP 可以获得和系统相机一样的电影效果拍摄能力,以及 Final Cut Pro、照片和iMovie 等应用程序的电影效果编辑能力。
iPhone 上的电影效果个人感觉可用性其实挺差的,穿帮的概率很高,也非常挑光线和角度。不仅是电影效果,FaceTime 的聚焦也是一样。计算摄影想要在视频拍摄上模拟大光圈还有很长的一条路要走。
重要性:⭐️
DockKit
iOS 17.0+
iPadOS 17.0+
Mac Catalyst 17.0+
我们在手持稳定器上一定看到过他们自带的 APP 具有跟踪主体的功能,这需要对被摄物体进行锁定,同时计算出摄像头(相机)的朝向角度,以保持被摄物体居中。过去都是各个公司自己实现的跟踪算法,今年 Apple 推出了原生能力支持。
Apple 推出这个框架有点无厘头,毕竟这个框架是搭配硬件设备使用的(官方文档),而 Apple 目前并没有类似这样的硬件。个人感觉这套算法应该是 FaceTime 上的 “人物局中” 的延伸,甚至不排除在今年下半年发布会上发布类似产品的可能。毕竟今年 tvOS 已经支持了 FaceTime ,搭配摄像头硬件也是一个非常合理的使用场景。
重要性:⭐️
MediaExtension
macOS 14.0+
Mac Catalyst 17.0+
此框架为开发人员提供了一种为系统本身不支持的媒体创建格式阅读器和视频解码器的方法。MediaExtension 格式读取器封装系统本身不支持的媒体资产,以便系统可以识别它们。MediaExtension 视频解码器解码系统本身不支持的视频格式。
目前官方没有更多关于该框架的介绍和视频。目前 macOS 对于不支持的媒体格式或类型一般都只能求助于第三方的播放器软件。我猜想这个框架可能是提供一个公开协议,让其他插件可以提供规范的视频编码和解码能力。这样的话,视频播放能力就和具体某一个软件无关。只需要安装某一种视频格式的解码插件,所有播放器(包括 QuickTime)都可以正常播放这种格式的视频。类似于目前 Windows 支持的做法。
重要性:⭐️
Observation
iOS 17.0+
iPadOS 17.0+
macOS 14.0+
Mac Catalyst 17.0+
tvOS 17.0+
watchOS 10.0+
Observation 提供了 Swift 中观察器设计模式的健壮、类型安全且高性能的实现。此模式允许可观察对象维护观察器列表,并通知它们特定或常规状态更改。这样做的优点是不会直接将对象耦合在一起,并允许在潜在的多个观察者之间隐式分发更新。
@Observation 是今年 SwiftUI 状态管理的最大改进。通过引入 Swift 宏,Apple 极大简化了状态管理相关的 API,是一个非常好的更新,强烈建议学习。但是不明白这种 API 级别的更新为何需要单独作为一个框架发布而不是作为现有 SwiftUI 框架的补充?
重要性:⭐️⭐️⭐️⭐️
SensitiveContentAnalysis
iOS 17.0+
iPadOS 17.0+
macOS 14.0+
Mac Catalyst 17.0+
watchOS 10.0+
此框架使应用能够检查内容是否存在裸露。在 iOS 和 macOS 中,“屏幕使用时间”中的“敏感内容警告”用户首选项或“通信安全”家长控制为用户提供了表明他们希望防止意外或意外暴露包含裸露的图像的选项。通过使用敏感内容分析在显示敏感内容之前检查敏感内容,为用户提供他们在这些设置中请求的体验。
没啥好说的,国内应该用不到。因为国内的内容审核基本上都在服务端,而且范围也远远大于裸露这个概念。
重要性:⭐️
SwiftData
iOS 17.0+
iPadOS 17.0+
macOS 14.0+
Mac Catalyst 17.0+
watchOS 10.0+
以声明方式编写模型代码,以添加托管持久性和自动 iCloud 同步。SwiftData 使您能够快速向应用程序添加持久性,只需最少的代码,并且没有外部依赖关系。使用宏等现代语言功能,SwiftData 使您能够编写快速、高效且安全的代码,使您能够描述应用程序的整个模型层(或对象图)。该框架处理存储基础模型数据,并选择性地跨多个设备同步该数据。
个人感觉是今年推出的新框架中最重要的框架。Observation 虽然极大方便和简化了 SwiftUI 的状态管理,但也只是锦上添花的事情。SwiftData 是真正实现了用 Swift 的方式去编写和管理数据库,同时对 SwiftUI 以及状态管理的融合更好,
重要性:⭐️⭐️⭐️⭐️
Symbols
iOS 17.0+
iPadOS 17.0+
macOS 14.0+
Mac Catalyst 17.0+
tvOS 17.0+
watchOS 10.0+
将通用动画应用于基于元件的图像。Symbols 框架提供对元件效果的访问,您可以使用这些效果在 AppKit、UIKit 和 SwiftUI 应用程序中对 SF 元件进行动画处理。
系统图标每年都会更新,不仅仅是图标数量,功能上也在迭代。从单一颜色到彩色图标,再到今年的动画支持。但是国内的公司一般都会有自己的设计 ID ,不太会考虑苹果提供的系统图标。而且今年的图标动画感觉适用的场景很有限,官方视频里出现的几个使用场景感觉都不是很适合,今年的 iOS 17 中也没看到有场景里用到了 FS Symbols 动画。
重要性:⭐️
WorkoutKit
iOS 17.0+
iPadOS 17.0+
watchOS 10.0+
创建、预览体能训练组合并将其同步到体能训练 App。体能训练工具包框架提供了一些模型和实用工具,用于在 iOS 和 watchOS App 中创建和预览体能训练合成,以及将计划的合成同步到体能训练 App。
以往 Apple Watch 只支持系统自带的一些运动项目的跟踪和监控,现在开发者也可以创建自定义的运动项目并集成在 Apple Watch 中。iPhone 和 iPad 上也支持自定义运动。举个使用场景,你在 Keep 上跟着教练做完一节 HIT,Keep 就可以把运动记录(名称、卡路里、呼吸等数据)记录在系统的运动 APP 上,方便进行统一的运动数据管理。
重要性:⭐️⭐️
TipKit
用于在界面上展示引导提示的框架。不仅包含了 UI 组建,同时提供了丰富的 API 用来控制提示展示的策略。
这个框架出现在了 WWDC 的讲座中,但是目前没有放出 API 文档。这个框架也是一个锦上添花的作用,因为提示的实现成本不高,目前 APP 都是自己实现。不过比较有意思的是,这个框架还提供了非常强大的展示策略定义功能,包括展示的频次、在某个事件之后展示、用户多次无视该提示就不再展示等等,还支持 iCloud 同步避免在多个设备上重复提示。
重要性:⭐️
总结
今年发布的新框架不是很多,重要的也很少。其实今年的大头都在 Vision Pro,只不过 Vision Pro 的能力大多基于现有的框架,如 ARKit、RealityKit,可见 Apple 的布局是有多么早。
比较意外的是今年 Apple 对于火热的生成式 Ai 几乎0参与,唯一沾点边的可能是 Xcode 15 更加“智能”的代码提示功能,但是和隔壁一比根本拿不出手。我猜测有两个原因,一是 Vision Pro 占用了 Apple 大量的资源,另外一个原因是目前生成式 Ai 的风评非常两极化。Apple 如今作为一个全球品牌,已经完全超出了一个消费电子品牌的范畴,感觉更像是迪斯尼这种文化内容公司。因此类似的,迪斯尼永远只拍欢乐的、安全的、政治正确的合家欢电影,而 Apple 这边的策略也非常类似,环保、包容、女性、隐私、安全等等,在公关形象上无懈可击。生成式 Ai 目前在隐私、安全问题上的担忧和 Apple 的策略不一致,所以比较谨慎。
最后是一个坏消息,以上所有的新框架都是 iOS17 +,意味着当你用上它的时候可能已经是5年后甚至更久了。这也是我没有给出5分的原因。因为即便是再重磅的框架,如果只能5年后再用,那你什么时候开始学都不嫌晚。