- (void)requestHealthAuthorization
{
if (![HKHealthStore isHealthDataAvailable])
{
NSLog(@"设备不支持healthKit"); return;
}
_healthStore = [[HKHealthStore alloc] init];
HKObjectType *type1 = [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierBiologicalSex]; // 性别
HKObjectType *type2 = [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierBloodType];//血型
HKObjectType *type3 = [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierDateOfBirth];//出生日期
HKObjectType *type4 = [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierFitzpatrickSkinType];//日光反应型皮肤类型
NSSet *set = [NSSet setWithObjects:type1, type2, type3, type4, nil]; // 读集合
__weak typeof (&*self) weakSelf = self;
[_healthStore requestAuthorizationToShareTypes:nil readTypes:set completion:^(BOOL success, NSError * _Nullable error) {
if (success)
{
[weakSelf readHealthPersonInfo];
} else
{
NSLog(@"healthkit不允许读写");
}
}];
}
//查询数据
- (void)readHealthPersonInfo
{
if ([UIDevice currentDevice].systemVersion.floatValue >=9.0)
{
NSLog(@"\n\n");
NSLog(@"数据从这天%@才能读到”, [_healthStore earliestPermittedSampleDate]);
}
NSError *error = nil;
NSDate *b = [_healthStore dateOfBirthWithError:&error];
if (!error) NSLog(@"出生日期=%@", b);
else NSLog(@"出生日期error=%@", error);
error = nil;
HKBiologicalSexObject *s = [_healthStore biologicalSexWithError:&error];
if (!error) {
NSLog(@"性别=%@", @(s.biologicalSex));
} else {
NSLog(@"性别error=%@",error);
}
error = nil;
HKBloodTypeObject *blood = [_healthStore bloodTypeWithError:&error];
if (!error) {
NSLog(@"血型=%@", @(blood.bloodType));
} else {
NSLog(@"血型error=%@",error);
}
error = nil;
HKFitzpatrickSkinTypeObject *fitz = [_healthStore fitzpatrickSkinTypeWithError:&error];
if (!error) {
NSLog(@"日光反应型皮肤类型=%@", @(fitz.skinType));
} else {
NSLog(@"日光反应型皮肤类型error=%@",error);
}
}