用途:SensorKit 让研究类 App 在 iPhone 和 Apple Watch 上录制并获取传感器数据,仅限 Apple 批准的研究项目。
前提与配置:需向 researchandcare.org 提交研究提案并获得批准;获取 com.apple.developer.sensorkit.reader.allow 授权(仅批准项目可获);使用启用 SensorKit 能力的显式 App ID 与手动描述文件;在 .entitlements 中只列出获批传感器。Info.plist 需配置 NSSensorKitUsageDescription、NSSensorKitPrivacyPolicyURL 和逐传感器的 NSSensorKitUsageDetail;Required 为 true 时用户拒绝会有提示。
主要能力:SRSensorReader 每个实例读取单一传感器,通过 SRSensorReaderDelegate 接收授权、录制、设备获取与样本获取回调。用 startRecording()/stopRecording() 控制录制;用 SRFetchRequest 指定时间范围和设备后调用 fetch(_:);用 SRDevice.current 或 fetchDevices() 区分 iPhone 与 Apple Watch 来源。样本需按 reader.sensor 转换为对应类型(如 SRAmbientLightSample、SRKeyboardMetrics、SRDeviceUsageReport)。
限制:仅可访问活跃传感器最多 7 天历史数据;新录制数据有 24 小时 Data Holding Period,重叠该时段的请求无结果;授权前先请求,获取前检查状态;必须在 startRecording() 或 fetch 前设置 delegate;需处理 .invalidEntitlement、.noAuthorization、.dataInaccessible、.fetchRequestInvalid、.promptDeclined 等 SRError。普通运动/活动建议用 CoreMotion,健康记录与锻炼用 HealthKit。