Highlight
WWDC22 第五天回顾视频总结了当日重点 session,涵盖 iOS App 电池优化、Swift on Server、ShazamKit 音频匹配、iPad 多窗口以及 Nearby Interaction 设备间交互。
核心内容
降低 App 的电量消耗
Display 是电量消耗的主要来源之一。当日 session 介绍了如何优化显示相关的功耗,让 App 更省电。
(00:07)
Swift on Server
Apple 展示了如何在 Xcode 中同时构建 iOS App 和 Swift Server 后端。使用 Swift 编写服务端组件可以缩小技术栈差距,让前后端共享代码和类型定义。
(00:15)
ShazamKit 音频匹配
Neil 演示了如何用 ShazamKit 将音频目录与视频进行匹配。Apple 还介绍了在规模化管理自定义音频目录方面的重要更新。
(00:23)
iPad 多窗口
当日 session 展示了如何为 iPad App 创建多窗口。演示者用了一个追踪阅读书籍的 App 作为示例,展示多窗口带来的生产力提升。
(00:32)
Nearby Interaction 与 Apple TV
回顾视频以一场设备间的井字棋游戏收尾,展示了 Nearby Interaction 框架如何让设备轻松连接到 Apple TV,实现跨设备互动体验。
(00:38)
详细内容
当日 Session 一览
WWDC22 第五天共涵盖以下主题方向:
电池与性能
- 优化显示功耗,延长设备续航
- 减少后台活动对电池的消耗
服务端 Swift
- 在 Xcode 中创建 Swift Server 项目
- 与 iOS App 共享模型代码
- 使用 Swift Package Manager 管理依赖
音频与媒体
- ShazamKit 自定义音频目录
- 大规模音频匹配管理
- 音频目录与视频内容同步
iPad 生产力
- 多窗口 Scene 配置
- 窗口管理与状态恢复
- 针对大屏优化的交互设计
设备间交互
- Nearby Interaction 框架
- 设备发现与连接
- Apple TV 作为游戏中心
井字棋跨设备交互示例
import NearbyInteraction
import MultipeerConnectivity
// 发现附近的设备
let session = NISession()
session.delegate = self
// 通过 MultipeerConnectivity 建立连接后
// 交换 discovery token
func shareDiscoveryToken(_ token: NIDiscoveryToken, to peer: MCPeerID) {
let data = try! NSKeyedArchiver.archivedData(
withRootObject: token,
requiringSecureCoding: true
)
// 发送给对等端
}
// 接收对方 token 后开始交互
func startInteraction(peerToken: NIDiscoveryToken) {
let config = NINearbyPeerConfiguration(peerToken: peerToken)
session.run(config)
}
// NISessionDelegate 回调
func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObject]) {
for object in nearbyObjects {
if let distance = object.distance {
print("距离: \(distance) 米")
}
if let direction = object.direction {
print("方向: \(direction)")
}
}
}
关键点:
NISession是 Nearby Interaction 的核心类- 设备间需要先交换
NIDiscoveryToken才能建立交互 - 通常配合
MultipeerConnectivity或CoreBluetooth完成 token 交换 NINearbyPeerConfiguration配置交互参数didUpdate回调提供距离和方向信息,可用于空间感知 UI
核心启发
-
用 Swift 统一前后端技术栈:在 Xcode 中同时维护 iOS App 和 Swift Server 项目,共享数据模型和验证逻辑。入口:Xcode -> File -> New -> Project -> Swift Server App。
-
为 iPad App 添加多窗口支持:利用 UIScene 配置让 App 支持同时打开多个窗口,提升生产力场景下的用户体验。入口:Info.plist -> UIApplicationSceneManifest -> 配置多个 scene delegate。
-
用 ShazamKit 构建音频识别功能:创建自定义音频目录,让 App 识别特定音频内容。适用于博物馆导览、活动签到、内容版权验证等场景。入口:
SHCustomCatalog+SHSession。 -
用 Nearby Interaction 实现空间感知功能:获取设备间的距离和方向,构建”找一找”、“靠近解锁”等交互体验。需要 U1 芯片支持(iPhone 11+)。入口:
NISession+NINearbyPeerConfiguration。 -
优化显示功耗延长续航:检查 App 的动画、刷新率和后台显示行为,减少不必要的屏幕更新。入口:Instruments -> Energy Log。
关联 Session
- Keynote — WWDC22 完整开场,了解全周发布概览
- What’s new in Swift — Swift 语言新特性,包含服务端 Swift 相关内容
- What’s new in SwiftUI — SwiftUI 多窗口和导航改进
- Meet Swift Charts — 数据可视化新框架
评论
GitHub Issues · utterances