用途:这是 Meta Wearables DAT iOS SDK 的会话生命周期指南,用于在 iOS 集成中管理设备会话状态。DAT SDK 的工作在会话内运行,Meta 眼镜提供两类体验:设备会话(持续访问传感器与输出)和事务(系统拥有的短交互,如通知、Hey Meta)。会话状态由设备决定,应用只负责观察。
主要能力:会话状态包括 idle、starting、started、paused、stopping、stopped,应用需按状态采取相应动作,如 started 时恢复工作、paused 时保持连接等待、stopped 时释放资源并允许用户重启。DeviceSession 提供 stateStream()/errorStream() 的 AsyncStream,以及 statePublisher/errorPublisher 的监听令牌,二者选一,并应在调用 start() 前订阅以免漏掉初始转换。错误流会发出 DeviceSessionError,需处理 .noEligibleDevice、.sessionAlreadyExists、.capabilityAlreadyActive、热/电相关(.thermalCritical、.thermalEmergency、.peakPowerShutdown、.batteryCritical)以及 .datAppOnTheGlassesUpdateRequired(一次性事件,应打开 Wearables.shared.openDATGlassesAppUpdate())。start() 使用类型化 throws,可捕获具体错误。
使用方式:创建会话后调用 start(),用 for await 遍历 stateStream() 处理状态;Stream 作为附加能力,状态为 stopped→waitingForDevice→starting→streaming→paused→stopped,可通过 statePublisher.listen 监听。设备可用性可用 Wearables.shared.devicesStream() 或 DeviceSelector 的 activeDevice/activeDeviceStream() 监控,后者在无可用设备时产出 nil。
适用场景与限制:适用于需要持续访问眼镜传感器或输出的 iOS 应用。设备会在用户打开其他体验、其他应用启动会话、摘下或折叠眼镜、从 Meta AI 配套应用移除应用、配套应用与眼镜连接中断时改变会话状态。暂停时连接保持但流停止,不应在 paused 时尝试重启,应等待 started 或 stopped;合上铰链会断开蓝牙并强制 stopped,打开铰链恢复蓝牙但不会重启会话,需在设备再次可用后新建会话。不要推断转换原因,只依赖可观察状态;仅在 stopped 后释放资源。具体 API 细节以官方文档为准。