当我第一次使用requestAuthorizationToShareTypes:readTypes:completion:
HKHealthStore
HKQuantityType
调用requestAuthorizationToShareTypes:readTypes:completion:
时,我可以看到这个模态视图请求用户授权读取和共享每种类型的应用程序可能需要访问的对象。
我试图弄清楚是否有办法提示用户这个模态视图,除了我第一次打电话:requestAuthorizationToShareTypes:readTypes:completion:
。
我尝试每次使用相同的设置调用HKQuantityType
,但在第一次调用之后它不再提示。在我成功提示此屏幕之前尝试使用新类型更改集时,但我不认为每次使用集合中的新 [self.healthStore requestAuthorizationToShareTypes:writeDataTypes readTypes:readDataTypes completion:^(BOOL success, NSError *error) {
if (!success) {
NSLog(@"You didn't allow HealthKit to access these read/write data types. The error was: %@.", error);
return;
}
dispatch_async(dispatch_get_main_queue(), ^{
// Update the user interface based on the current user's health information.
});
}];
调用此方法时正确的方式(因为存在类型数量的限制)。
甚至可能吗?
感谢您提供任何帮助。
更新
我将添加一些调用的代码段:
writeDataTypesz
从以下方法返回readDataTypes
和NSSet
// Returns the types of data that I want to write to HealthKit.
- (NSSet *)dataTypesToWrite
{
HKQuantityType *heightType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight];
HKQuantityType *weightType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass];
return [NSSet setWithObjects: heightType, weightType, nil];
}
// Returns the types of data that I want to read from HealthKit.
- (NSSet *)dataTypesToRead
{
HKQuantityType *heightType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight];
HKQuantityType *weightType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass];
HKCharacteristicType *birthdayType = [HKCharacteristicType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierDateOfBirth];
HKCharacteristicType *biologicalSex = [HKCharacteristicType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierBiologicalSex];
return [NSSet setWithObjects:heightType,weightType,birthdayType,biologicalSex, nil];
}
的位置:
requestAuthorizationToShareTypes:readTypes:completion:
每次调用{{1}}时,将设置更改为包含 NEW 类型会导致打开此视图,其中包含我曾请求权限的所有类型(不一定在此特定调用中):
答案 0 :(得分:3)
按照设计,无法重新提示用户进行授权。如果您希望用户考虑更改其应用的授权,请让他们转到“设置”或“运行状况”应用。
答案 1 :(得分:1)
到目前为止我们做不到。但是,能够这样做是有道理的,因为切换访问权限并不像点击“确定”或“取消”按钮那么简单。你可以假设每个人都知道如何点击开关并打开电源,但相信我,如果你采取这种方式,你就错了。
我在苹果的雷达中提出了一个错误,让他们知道他们的设计并不完美。我们应该能够再次提示用户。如果用户生气,他总是可以删除我们的应用程序,我觉得这比阅读很长的“如何在Health.app中启用访问”列表并让人感到困惑要好得多,而这正是普通用户所做的。