Ответ 1
В целях конфиденциальности вы не можете просмотреть статус авторизации вашего приложения для определенного типа.
Я использую HealthKit для чтения определенных типов информации. Я специально не прошу написать функциональность. Проблема возникает при попытке определить, разрешил ли пользователю считывать определенный тип работоспособности.
Я полагаю, что предполагаемый способ сделать это - использовать метод authorizationStatusForType HKHealthStore, но это только возвращается или неизвестно. Он возвращается только для типов write. Кто-нибудь нашел способ использовать этот метод для чтения или другой работы?
HKQuantityType *stepsType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight];
HKAuthorizationStatus status = [self.healthStore authorizationStatusForType:stepsType];
В целях конфиденциальности вы не можете просмотреть статус авторизации вашего приложения для определенного типа.
NSArray *quantityTypesUsedInApp = @[HKQuantityTypeIdentifierBodyMass,
HKQuantityTypeIdentifierHeight,
HKQuantityTypeIdentifierBodyMassIndex,
HKQuantityTypeIdentifierBodyFatPercentage,
HKQuantityTypeIdentifierLeanBodyMass];
for (NSString *identifier in quantityTypesUsedInApp) {
HKQuantityType *sampleType = [HKQuantityType quantityTypeForIdentifier:identifier];
NSSet *requestSampleUnit = [NSSet setWithObject:sampleType];
[self.healthKitStore preferredUnitsForQuantityTypes:requestSampleUnit completion:^(NSDictionary *preferredUnits, NSError *error) {
if (!error) {
HKUnit *unit = [preferredUnits objectForKey:sampleType];
NSLog(@"%@ : %@", sampleType.identifier, unit.unitString);
//sampleType enabled for read
} else {
switch (error.code) {
case 5:
NSLog(@"%@ access denied", sampleType.identifier);
//sampleType denied for read
break;
default:
NSLog(@"request preffered quantity types error: %@", error);
break;
}
}
}];
}