> ## Documentation Index
> Fetch the complete documentation index at: https://sdk.sleepcycle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# iOS 版本说明

## 版本 1.2.0

### 新功能

* **智能闹钟**：通过 `SmartAlarmConfig` 配置唤醒时段，并通过新增的 `smartAlarmStream: AsyncStream<SmartAlarmEvent>` 观察闹钟生命周期事件。事件类型为 `.armed` 和 `.triggered(reason)`，触发原因包括 `.optimalWakeUp`、`.userInteraction` 和 `.windowEnd`。智能闹钟受 `smartAlarm` 功能限制，仅在主声道上支持。
* **立体声声道分离**：新增 `ChannelSeparationConfig`，控制立体声音频声道如何分配到分析声道，内置预设为 `.bedSideMics`、`.centeredMicArray` 和 `.detectionStrengthOnly`。
* **可配置的音频输入**：新增 `AudioInputConfig`，在通过 `createLiveDataSource(audioConfig:)` 创建实时数据源时选择音频格式（单声道/立体声）和首选输入设备。
* **睡眠评分**：使用 `SleepScoring.compute(result:history:dateOfBirth:chronoType:)` 计算单晚的睡眠评分，它返回一个 `SleepScore`，包含 `total`、`duration`、`quality` 和 `routine` 子评分（每项均为 0.0–1.0）。通过 `AnalysisResult.toSleepScoreHistoryEntry()` 从已完成的结果构建历史记录条目，并通过 `SleepScoring.identifyChronoType(history:)` 推导用户的 `ChronoType`。
* **扩展音频事件**：新增 `extendedAudioEvents` 功能标志，公开标准集之外的额外 `EventType` 值。`EventType.standardTypes` 和 `EventType.extendedTypes` 对可用集合进行分组。
* **结果中的实时睡眠分期**：`AnalysisResult` 现在包含 `realTimeSleepStageIntervals`，即会话期间实时发出的睡眠分期（与会话结束后的 `sleepStageIntervals` 并存）。

### API 变更

* 支持声道的启动方法现在为 `startMultiChannelAnalysis(channel:config:at:smartAlarmConfig:tag:)`，并接受 `smartAlarmConfig:` 参数。
* `stopAnalysis(channel:)` 现在为 `stopAnalysis(sessionId:)`，通过会话的 `UUID` 停止该会话。
* `resumeAnalysis()` 现在返回 `[ResumedSession]`（每个恢复的会话包含会话 ID、声道和智能闹钟配置），不再是 `[AnalysisChannel: UUID]`。
* 在 `initialize()` 中新增 `forceTokenRefresh: Bool` 参数，即使存在缓存令牌也可强制重新获取令牌。
* 在 `startAnalysis(...)`、`startDataSource(...)` 和 `resumeAnalysis(...)` 中新增 `channelSeparationConfig: ChannelSeparationConfig` 参数。
* `AudioEventListener.onAudioAnalysisBatchCompleted(...)` 现在接收 `audioProbability: [EventType: Float]`，即每批次中每种事件类型的概率。`rms: [Float]` 参数已替换为 `dbSpl: [Float]`，提供以 dB SPL 表示的 A 计权声音音量。
* `EventEndedInfo` 现在包含 `eventType: EventType` 属性。
* `AnalysisResult` 现在包含 `timeZone: TimeZone`（会话开始时捕获）和 `realTimeSleepStageIntervals: [SleepStageInterval]`。
* 流访问器（`eventStream`、`breathingRateStream`、`errorStream`、`sleepStageStream`、`audioHealthStream`、`stateStream`）和 `currentState` 现在为 `async`（`get async`）。
* 将 `SleepCycleSdkError.sessionAlreadyRunning` 重命名为 `.channelAlreadyRunning`，并新增 `.featureNotEnabled(_:)`。
* 新增 `SleepCycleSdk.version`，返回 SDK 版本字符串。

## 版本 1.1.0

### 新功能

* **多声道分析**：使用立体声音频同时分析两个声道。新增 `startDataSource(using:eventListeners:)` / `stopDataSource()` 方法，将数据源生命周期与会话生命周期分离；通过 `startAnalysis(channel:config:at:tag:)` 在各声道上分别启动会话，通过 `stopAnalysis(channel:at:)` 单独停止某个会话。
* **音频运行状况监测**：新增 `audioHealthStream: AsyncStream<AudioHealthUpdate>`，实时发出音频输入运行状况的变化（`.healthy`、`.flatline`、`.missingInput`）。分析结果中包含 `AudioStatistics` 和 `AudioHealthInterval`。
* **所有公共类型上的会话 ID**：`Event`、`BreathingRate`、`SleepStageInterval`、`AudioClip` 和 `AudioHealthUpdate` 现在都包含 `sessionId: UUID` 属性，用于标识它们所属的会话。

### API 变更

* `startAnalysis()` 现在返回一个标识会话的 `UUID`。
* 在 `startAnalysis()` 中新增 `tag: String?` 参数，用于为会话打标签。
* `AudioEventListener.onAudioAnalysisBatchCompleted()` 现在包含 `sessionId: UUID` 参数。
* `AnalysisResult` 现在包含 `sleepStageIntervals`、`audioStatistics` 和 `sessionId` 属性。
* 在 `SleepAnalysisFeatures` 中新增 `multiChannelAnalysis`。
