版权声明:未经本人允许,禁止转载.
你的应用永远不会自动获取健康数据 -- 你需要获得许可
1. 导入HealthKit框架
#import <HealthKit/HealthKit.h>
2. 判断设备是否支持HealthKit
- HealthKit是iOS8加入的API
- HealthKit在iPad上不可用
通过HKHealthStore类方法 + (BOOL)isHealthDataAvailable;判断设备是否支持HealthKit
BOOL isSupport = [HKHealthStore isHealthDataAvailable];
3. HKHealthStore初始化,请求用户授权
HealthKit框架核心是HkHealthStore类,主要对数据进行操作
通过requestAuthorizationToShareTypes:readTypes:completion:方法来请求HealthKit数据的权限。对每种类型的数据,都必须请求许可来共享和读取。
HKHealthStore *healthStore = [[HKHealthStore alloc] init];
NSSet *shareType = [NSSet setWithObject:[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]];
NSSet *readType = [NSSet setWithObject:[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]];
[healthStore requestAuthorizationToShareTypes:shareType readTypes:readType completion:^(BOOL success, NSError * _Nullable error) {
}];
- 1.第一个参数传入一个NSSet类型数据,告知用户,我的App可能会修改你健康数据库中的这些选项数据。
- 2.第二个参数也是传入NSSet类型数据,告知用户,我的App可能会从你的数据库中读取以下几项数据。
- 3.第三个是授权许可回调BOOL值success用于区分是否授权成功(仅用于判断系统是否支持HealthKit),而不是判断用户是允许OR不允许
4. HKSampleType样本类型
样本可以细分为五个样本类型,样本的获取调用HKObjectType类中的方法
1. 数量样本(HKQuantityType)
这种样本代表一些可以存储为数值的数据。
调用 + quantityTypeForIdentifier: 方法,样本类型获取
[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];
-
身体测量
1. HKQuantityTypeIdentifierBodyMassIndex 身高体重指数 2. HKQuantityTypeIdentifierBodyFatPercentage 体脂率 3. HKQuantityTypeIdentifierHeight 身高 4. HKQuantityTypeIdentifierBodyMass 体重 5. HKQuantityTypeIdentifierLeanBodyMass 去脂体重
-
健身数据
1. HKQuantityTypeIdentifierStepCount 步数 2. HKQuantityTypeIdentifierDistanceWalkingRunning 步行+跑步距离 3. HKQuantityTypeIdentifierDistanceCycling 骑车距离 4. HKQuantityTypeIdentifierBasalEnergyBurned 静息能量 5. HKQuantityTypeIdentifierActiveEnergyBurned 活动能量 6. HKQuantityTypeIdentifierFlightsClimbed 已爬楼层 //不允许share 7. HKQuantityTypeIdentifierNikeFuel NikeFuel 8. HKQuantityTypeIdentifierAppleExerciseTime 锻炼分钟数健身数据
-
主要特征
1. HKQuantityTypeIdentifierHeartRate 心率 2. HKQuantityTypeIdentifierBodyTemperature 体温 3. HKQuantityTypeIdentifierBasalBodyTemperature 基础体温 4. HKQuantityTypeIdentifierBloodPressureSystolic 收缩压 5. HKQuantityTypeIdentifierBloodPressureDiastolic 舒张压 6. HKQuantityTypeIdentifierRespiratoryRate 呼吸速率
-
数据结果
1. HKQuantityTypeIdentifierOxygenSaturation 血氧饱和度 2. HKQuantityTypeIdentifierPeripheralPerfusionIndex 末梢灌注指数 3. HKQuantityTypeIdentifierBloodGlucose 血糖 4. HKQuantityTypeIdentifierNumberOfTimesFallen 摔倒次数 5. HKQuantityTypeIdentifierElectrodermalActivity 皮电活动 6. HKQuantityTypeIdentifierInhalerUsage 吸入剂用量 7. HKQuantityTypeIdentifierBloodAlcoholContent 血液酒精浓度 8. HKQuantityTypeIdentifierForcedVitalCapacity 最大肺活量|用力肺活量 9. HKQuantityTypeIdentifierForcedExpiratoryVolume1 第一秒用力呼气量 10.HKQuantityTypeIdentifierPeakExpiratoryFlowRate 呼气流量峰值
-
营养摄入
1. HKQuantityTypeIdentifierDietaryFatTotal 总脂肪 2. HKQuantityTypeIdentifierDietaryFatPolyunsaturated 多元不饱和脂肪 3. HKQuantityTypeIdentifierDietaryFatMonounsaturated 单元不饱和脂肪 4. HKQuantityTypeIdentifierDietaryFatSaturated 饱和脂肪 5. HKQuantityTypeIdentifierDietaryCholesterol 膳食胆固醇 6. HKQuantityTypeIdentifierDietarySodium 钠 7. HKQuantityTypeIdentifierDietaryCarbohydrates 碳水化合物 8. HKQuantityTypeIdentifierDietaryFiber 纤维 9. HKQuantityTypeIdentifierDietarySugar 膳食糖 10.HKQuantityTypeIdentifierDietaryEnergyConsumed 膳食能量 11.HKQuantityTypeIdentifierDietaryProtein 蛋白质 12.HKQuantityTypeIdentifierDietaryVitaminA 维生素 A 13.HKQuantityTypeIdentifierDietaryVitaminB6 维生素 B6 14.HKQuantityTypeIdentifierDietaryVitaminB12 维生素 B12 15.HKQuantityTypeIdentifierDietaryVitaminC 维生素 C 16.HKQuantityTypeIdentifierDietaryVitaminD 维生素 D 17.HKQuantityTypeIdentifierDietaryVitaminE 维生素 E 18.HKQuantityTypeIdentifierDietaryVitaminK 维生素 K 19.HKQuantityTypeIdentifierDietaryCalcium 钙 20.HKQuantityTypeIdentifierDietaryIron 铁 21.HKQuantityTypeIdentifierDietaryThiamin 硫铵 22.HKQuantityTypeIdentifierDietaryRiboflavin 核黄素 23.HKQuantityTypeIdentifierDietaryNiacin 烟酸 24.HKQuantityTypeIdentifierDietaryFolate 叶酸 25.HKQuantityTypeIdentifierDietaryBiotin 生物素 26.HKQuantityTypeIdentifierDietaryPantothenicAcid 泛酸 27.HKQuantityTypeIdentifierDietaryPhosphorus 磷 28.HKQuantityTypeIdentifierDietaryIodine 碘 29.HKQuantityTypeIdentifierDietaryMagnesium 镁 30.HKQuantityTypeIdentifierDietaryZinc 锌 31.HKQuantityTypeIdentifierDietarySelenium 硒 32.HKQuantityTypeIdentifierDietaryCopper 铜 33.HKQuantityTypeIdentifierDietaryManganese 锰 34.HKQuantityTypeIdentifierDietaryChromium 铬 35.HKQuantityTypeIdentifierDietaryMolybdenum 钼 36.HKQuantityTypeIdentifierDietaryChloride 氯化物 37.HKQuantityTypeIdentifierDietaryPotassium 钾 38.HKQuantityTypeIdentifierDietaryCaffeine 咖啡因 39.HKQuantityTypeIdentifierDietaryWater 水 40.HKQuantityTypeIdentifierUVExposure 紫外线指数
2. 类别样本(HKCategoryType)
这种样本代表一些可以被分为有限种类的数据。
调用 + categoryTypeForIdentifier: 方法,样本类型获取
[HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis];
-
生殖健康
1. HKCategoryTypeIdentifierSleepAnalysis 睡眠分析 2. HKCategoryTypeIdentifierCervicalMucusQuality 宫颈粘液质量 3. HKCategoryTypeIdentifierOvulationTestResult 排卵测试结果 4. HKCategoryTypeIdentifierMenstrualFlow 月经 5. HKCategoryTypeIdentifierIntermenstrualBleeding 点滴出血 6. HKCategoryTypeIdentifierSexualActivity 性行为 //不允许share 7. HKCategoryTypeIdentifierAppleStandHour 站立小时
3. 特征样本(HKCharacteristicType)
这种样本代表一些基本不变的数据
调用 + characteristicTypeForIdentifier: 方法,样本类型获取
[HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierBiologicalSex];
-
本人信息
//不允许share 1. HKCharacteristicTypeIdentifierBiologicalSex 性别 2. HKCharacteristicTypeIdentifierBloodType 血型 3. HKCharacteristicTypeIdentifierDateOfBirth 出生日期 4. HKCharacteristicTypeIdentifierFitzpatrickSkinType 日光反应型皮肤类型
4. Correlation(HKCorrelationType)
这种样本代表复合数据,包含一个或多个样本
-
样本类型不允许share和read(枚举)
//不允许share And read 1.HKCorrelationTypeIdentifierBloodPressure 血压 2.HKCorrelationTypeIdentifierFood 食物
5. Workout(HKWorkoutType)
Workout代表某些物理活动,像跑步、游泳,甚至游戏。
调用 + workoutType 方法,样本类型获取
[HKObjectType workoutType];
枚举
1.HKWorkoutTypeIdentifier 体能训练
6. activitySummaryType(健身记录)获取
包含(活动,锻炼,站立)
调用 + activitySummaryType 方法,样本类型获取
[HKObjectType activitySummaryType];