WWDC Quick Look 💓 By SwiftGGTeam
WWDC22 Day 5 recap

WWDC22 Day 5 recap

观看原视频

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 才能建立交互
  • 通常配合 MultipeerConnectivityCoreBluetooth 完成 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

评论

GitHub Issues · utterances