我一直无法显示HealthKit requestAuthorization对话框。对于具有不同OS版本和不同安装方法的两种不同手机就是这种情况(见下文)。 requestAuthorization代码是标准的样板代码,例如:
HKCharacteristicType *genderType = [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierBiologicalSex];
[self.healthStore requestAuthorizationToShareTypes:nil readTypes:[NSSet setWithObjects: genderType, nil] completion:^(BOOL success, NSError *error) {
NSLog(@"requestAuthorization completion block");
}];
我尝试了一个只有该代码的新应用,为requestAuthorization方法调用尝试了不同的参数,并尝试以多种不同的方式重置我们的系统:app uninstall,resetting settings,erasing phone content and setting与现有的部分备份;使用完整备份删除手机内容和设置,删除内容和设置,并将手机作为新手机启动。尝试了多种不同的readTypes和shareTypes。每次在全新的应用安装上调用requestAuthorization时,都会显示以下错误代码:
"发生错误=错误域= com.apple.healthkit代码= 4"丢失 com.apple.developer.healthkit权利。"的UserInfo = 0x7fa748534b00 {NSLocalizedDescription =缺少com.apple.developer.healthkit 权利}"
但是,HealthKit权利在xcode上的功能以及Apple Developer上的App ID中的功能中设置:证书,标识符和配置文件。
- 问题: 如何解决此问题,以便出现requestAuthorization对话框?手机进入一致状态会导致此错误的可能原因是什么?
- 使用的手机: iPhone 6,iPhone 6 Plus - 使用的操作系统版本: iOS 9.0 / 9.0.2 / 9.1 / 9.2 - 将应用加载到手机上的方法: iOS App Store,Watch App App Store,TestFlight,xcode - 这似乎没有被破坏的情况:与我们的用户' (非开发)手机通过App Store安装。
答案 0 :(得分:0)
有些事情可能导致这种情况。首先,您的配置文件可能与您在Web门户上实际看到的内容过时。尝试从XCode手动刷新这些内容。
您的应用是否有应用扩展程序或使用HealthKit框架的watchOS应用程序?每个扩展/监视应用程序都将在Web门户上拥有自己的配置文件,如果HealthKit框架已添加到其中任何一个而没有添加权利,那么这也可能导致错误。