读取特征数据
HealthKit 中的 特征数据 指的是用户个人的静态属性,如出生日期、生物性别、血型、皮肤类型、是否使用轮椅,以及活动移动模式等。这些信息通常由用户在“健康”App 中设置,属于只读数据。
Scripting 提供了一系列 全局异步 API 来读取这些数据。
支持读取的特征
特征名称 |
API 调用方式 |
返回类型 |
出生日期 |
await Health.dateOfBirth() |
DateComponents |
生物性别 |
await Health.biologicalSex() |
HealthBiologicalSex 枚举 |
血型 |
await Health.bloodType() |
HealthBloodType 枚举 |
皮肤类型(Fitzpatrick) |
await Health.fitzpatrickSkinType() |
HealthFitzpatrickSkinType 枚举 |
是否使用轮椅 |
await Health.wheelchairUse() |
HealthWheelchairUse 枚举 |
活动移动模式 |
await Health.activityMoveMode() |
HealthActivityMoveMode 枚举 |
1. 读取出生日期
1const birthDate = await Health.dateOfBirth()
2console.log(`出生日期:${birthDate.year}年${birthDate.month}月${birthDate.day}日`)
返回值为 DateComponents
对象,例如:
1{
2 year: 1989,
3 month: 7,
4 day: 4
5}
2. 读取生物性别
1const sex = await Health.biologicalSex()
2
3switch (sex) {
4 case HealthBiologicalSex.female:
5 console.log("女性")
6 break
7 case HealthBiologicalSex.male:
8 console.log("男性")
9 break
10 case HealthBiologicalSex.other:
11 console.log("其他")
12 break
13 case HealthBiologicalSex.notSet:
14 console.log("未设置")
15 break
16}
3. 读取血型
1const blood = await Health.bloodType()
2
3switch (blood) {
4 case HealthBloodType.aPositive:
5 console.log("A型阳性")
6 break
7 case HealthBloodType.oNegative:
8 console.log("O型阴性")
9 break
10 // 可补充更多类型
11 default:
12 console.log("未设置")
13}
4. 读取皮肤类型(Fitzpatrick)
1const skinType = await Health.fitzpatrickSkinType()
2
3switch (skinType) {
4 case HealthFitzpatrickSkinType.I:
5 console.log("类型 I:非常白")
6 break
7 case HealthFitzpatrickSkinType.VI:
8 console.log("类型 VI:深褐色至黑色")
9 break
10 default:
11 console.log("未设置")
12}
5. 判断是否使用轮椅
1const wheelchair = await Health.wheelchairUse()
2
3if (wheelchair === HealthWheelchairUse.yes) {
4 console.log("用户使用轮椅")
5} else if (wheelchair === HealthWheelchairUse.no) {
6 console.log("用户不使用轮椅")
7} else {
8 console.log("未设置")
9}
6. 读取活动移动模式
1const mode = await Health.activityMoveMode()
2
3if (mode === HealthActivityMoveMode.activeEnergy) {
4 console.log("通过活跃能量追踪活动")
5} else if (mode === HealthActivityMoveMode.appleMoveTime) {
6 console.log("通过 Apple Move Time 追踪活动")
7}
错误处理
如果:
- 用户未设置该特征;
- 没有获取权限;
- 设备不支持 HealthKit;
调用 API 时可能抛出异常。建议使用 try/catch
进行捕获:
1try {
2 const sex = await Health.biologicalSex()
3 console.log(sex)
4} catch (err) {
5 console.error("读取生物性别失败:", err)
6}
总结
你可以通过以下全局 API 读取用户的静态健康特征:
1await Health.dateOfBirth()
2await Health.biologicalSex()
3await Health.bloodType()
4await Health.fitzpatrickSkinType()
5await Health.wheelchairUse()
6await Health.activityMoveMode()
这些值来源于用户在健康 App 中的个人设置,通常不会频繁变化。请注意处理未设置或读取失败的情况。