HealthKit HKAuthorizationStatus用于读取数据

时间:2014-08-26 18:02:40

标签: ios ios8 health-kit

我使用HealthKit来阅读某些类型的信息。我特别不要求写功能。当尝试检测用户是否允许读取某个健康类型时,会出现此问题。

我认为这样做的目的是使用HKHealthStore的authorizationStatusForType方法,但这只是被拒绝或未知。它仅返回写入类型的授权。有没有人找到一种方法来使用这种方法进行阅读或其他解决方法?

HKQuantityType *stepsType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight];
HKAuthorizationStatus status = [self.healthStore authorizationStatusForType:stepsType];

2 个答案:

答案 0 :(得分:14)

出于隐私原因,您无法查看应用程序对特定类型的读取授权状态。

答案 1 :(得分:1)

        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;
                }


            }

        }];

    }