我正在尝试将 HealthKit 与我正在构建的应用程序集成,并且我似乎已成功为其添加了权利。我已经使用适当的应用程序 ID 创建并下载了配置文件,并且 Xcode Capabilities 选项卡中的 HealthKit 切换看起来很好:
但是,当我运行该应用程序时,出现以下错误:
HealthKit authorization denied!
Error Domain=com.apple.healthkit Code=4 "Missing com.apple.developer.healthkit entitlement." UserInfo={NSLocalizedDescription=Missing com.apple.developer.healthkit entitlement.}
这是一个奇怪的错误消息,因为
Add the "HealthKit" entitlement to your App ID
已经被检查为成功完成。但是,一旦我收到该错误,已检查的 App ID 权利将更改为:
但是在我的开发者帐户中的 App ID 中,App ID 显示确实启用了 HealthKit。
它在我的配置文件中显示了相同的内容。
而且我只有一个 App ID 和一个配置文件可供选择,所以我不可能把它们混在一起。
最佳答案
我现在有一个与 CloudKit 权利非常相似的问题:( 在模拟器和设备中的调试中工作,但在使用分发配置文件构建时不是,权利最终不会出现在最终存档中。虽然通过了验证......奇怪。
你有没有机会解决这个问题?
如果没有,您仍然可以检查一些事情。
现在删除该文件夹中的所有配置文件。我们这样做是为了 Xcode 不会意外使用错误的配置文件。
如果您正在构建实际的文件或 ipas,最好知道这些包中的最终权限是什么(您可以打开它们并检查;对于存档:存档文件(右键单击,显示包内容)-> 产品 -> 应用程序-> app name.app(右键单击,显示包内容)-> archived-expanded-entitlements.xcent(文本文件);对于ipa(类似):重命名为zip -> unzip -> Payload -> app name.app - > 归档扩展权利.cent
- - - 编辑 - - -
我已经解决了我的问题。我认为我的项目文件处于一种奇怪的状态,因为我在过去的某个时候重命名了一些东西,并且不得不手动更新项目文件中的一些条目。
我知道构建过程的哪一步出错了。 ProcessProductPackaging 步骤获取原始权利并生成最终用于签名的 .xcent 文件。
出于某种原因,对于发布配置,Xcode 不尊重我的权利文件的位置,而是仅使用 SDK 中的默认模板,例如。/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.2.sdk/Entitlements.plist
我无法弄清楚究竟是为什么,但是对于 Debug 配置,事情似乎可以正常工作。所以我修改了我的发布配置并创建了一个具有不同名称的新配置,之后构建过程开始获取我的权利文件。从项目文件 diff 中,仍然不清楚为什么以前的事情不起作用。
关于ios - 缺少 HealthKit 权利,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33071726/