用途:在 iOS 应用中访问加速度计、陀螺仪、姿态/设备运动、计步器、高度计及专用传感器,构建传感器工作流。目标 Swift 6.3 / iOS 26+。
主要能力:原始加速度计与陀螺仪数据流;CMDeviceMotion 融合姿态、重力与用户加速度;CMPedometer 步数、距离与运动状态;CMMotionActivityManager 活动识别;CMAltimeter 相对高度与气压;CMHeadphoneMotionManager 耳机头部姿态;CMBatchedSensorManager(iOS 17+)批量高频运动数据;CMWaterSubmersionManager 支持机型的水下深度与温度。
使用方式:在 Info.plist 添加 NSMotionUsageDescription;对 CMPedometer、CMMotionActivityManager、CMAltimeter 检查授权状态(如 CMMotionActivityManager.authorizationStatus())。全应用仅保留一个共享 CMMotionManager 实例,避免传感器争用。开始前检查 isAccelerometerAvailable 等可用性标志,设置更新间隔(如 1.0/60.0 即 60 Hz)。姿态与倾斜优先用 CMDeviceMotion 而非原始加速度计。视图消失或进入后台时调用 stopAccelerometerUpdates、stopDeviceMotionUpdates 等停止更新。
限制与常见错误:缺少 NSMotionUsageDescription 会在访问活动、计步或高度计时崩溃;多个 CMMotionManager 实例会降低系统更新率并增加耗电;后台不停止更新会耗电并可能被系统终止;原始加速度计含重力与噪声,不适合判断方向;应按需选择保守的更新频率(如倾斜检测 10–20 Hz,实时物理/游戏才用 60 Hz)。扩展模式(SwiftUI 集成、批量传感器、耳机运动、水下浸没)见 references/motion-patterns.md。