首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HKHealthStore requestAuthorizationToShareTypes:readTypes:completion总是返回成功吗?

HKHealthStore requestAuthorizationToShareTypes:readTypes:completion总是返回成功吗?
EN

Stack Overflow用户
提问于 2014-08-20 16:29:54
回答 3查看 1.4K关注 0票数 2

我似乎无法捕获和处理取消HealthKit预留的用户。完成块总是返回成功和零错误。

代码语言:javascript
复制
[[DataManager healthStore] requestAuthorizationToShareTypes:dataTypesToWrite
                                                  readTypes:dataTypesToRead
                                                 completion:^(BOOL success, NSError *error)
 {
     if (!success)
     {
         NSLog(@"You didn't allow HealthKit to access these read/write data types. In your app, try to handle this error gracefully when a user decides not to provide access. The error was: %@. If you're using a simulator, try it on a device.", error);
     }

     if (completion)
     {
         completion(success,error);
     }
 }];
EN

回答 3

Stack Overflow用户

发布于 2014-08-31 04:41:49

success参数不指示您的应用程序是否已被授予所请求的授权。它仅指示是否成功提示用户进行授权(如果需要提示)。如果用户取消提示或由于某种原因无法显示提示,则success参数将为NO,错误将为非零。

另请注意,根据设计,无法查询应用程序是否具有对类型的读取访问权限。您只能使用-HKHealthStore authorizationStatusForType:接口查询应用程序是否有权保存某一类型的对象。

票数 4
EN

Stack Overflow用户

发布于 2014-09-10 06:12:55

这确实是一个bug。这是固定在iOS 8黄金大师种子。

票数 2
EN

Stack Overflow用户

发布于 2016-06-28 15:17:00

如果您想知道是否为healthkit授予了任何权限,可以使用此方法。

代码语言:javascript
复制
-(BOOL) anyPermissionIsGiven {

NSMutableArray * authArray = [[NSMutableArray alloc]init];

[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietarySodium]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCarbohydrates]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFiber]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryProtein]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminA]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminB6]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminC]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminE]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminK]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCalcium]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryThiamin]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFolate]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryPhosphorus]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryMagnesium]];
[authArray addObject:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryPotassium]];

BOOL anyPermissionGiven = NO;
for (HKQuantityType * quantityType in authArray) {
    if([self.healthStore authorizationStatusForType:quantityType] == HKAuthorizationStatusSharingAuthorized) {
        anyPermissionGiven = YES;
        break;
    }
}

return anyPermissionGiven;

}

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25400102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档