我似乎无法捕获和处理取消HealthKit预留的用户。完成块总是返回成功和零错误。
[[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);
}
}];发布于 2014-08-31 04:41:49
success参数不指示您的应用程序是否已被授予所请求的授权。它仅指示是否成功提示用户进行授权(如果需要提示)。如果用户取消提示或由于某种原因无法显示提示,则success参数将为NO,错误将为非零。
另请注意,根据设计,无法查询应用程序是否具有对类型的读取访问权限。您只能使用-HKHealthStore authorizationStatusForType:接口查询应用程序是否有权保存某一类型的对象。
发布于 2014-09-10 06:12:55
这确实是一个bug。这是固定在iOS 8黄金大师种子。
发布于 2016-06-28 15:17:00
如果您想知道是否为healthkit授予了任何权限,可以使用此方法。
-(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;}
https://stackoverflow.com/questions/25400102
复制相似问题