10

我在我的 iOS Swift 应用程序中添加 HealthKit 的代码,但出现错误:

/* Ask for permission to access the health store */
override func viewDidAppear(animated: Bool) {
  super.viewDidAppear(animated)
  
  if HKHealthStore.isHealthDataAvailable(){
    
    healthStore.requestAuthorizationToShareTypes(typesToShare,
      readTypes: typesToRead,
      completion: {(succeeded: Bool, error: NSError!) in
        
        if succeeded && error == nil{
          println("Successfully received authorization")
        } else {
          if let theError = error{
            println("Error occurred = \(theError)")
          }
        }
      })

  } else {
    println("Health data is not available")
  }    
}

发生错误 = 错误域 = com.apple.healthkit 代码 = 4“缺少 com.apple.developer.healthkit 权利。” UserInfo=0x7fa748534b00 {NSLocalizedDescription=缺少 com.apple.developer.healthkit 权利。}

如何解决这个问题?

4

7 回答 7

36

我花了 3 天时间试图找出问题所在。我通过这些步骤找到了解决方案:

在此处输入图像描述

  1. 首先进入项目(如图所示)
  2. 打开项目和目标列表
  3. 选择名称App WatchKit Extension
  4. 转到功能选项卡,在 Health Kit 中按下,瞧……它对我有用。

我正在使用 iOS 9.3.2 和 Xcode 7.3.1

于 2016-06-06T19:26:43.907 回答
11

以上两个答案都应该先尝试。然而如果

  1. 您确定该功能已被激活
  2. 您确信与您的配置文件关联的应用 ID 已打开 healthkit 并与应用的捆绑 ID 匹配

然后尝试通过选择您的目标并转到强制构建使用该特定的配置文件

构建设置 -> 代码签名 -> 配置文件

并手动选择它。

如果正在使用“自动选择”,我会遇到调试中出现上述错误的情况

于 2015-02-21T04:02:07.457 回答
10

该错误是由于您尚未将 HealthKit Entitlement 添加到您的目标。

  1. 转到 Xcode 中的项目设置。
  2. 从那里,导航到“功能”选项卡。
  3. 向下滚动,直到看到“HealthKit”,然后将开关切换到打开。
  4. Xcode 现在会将 HealthKit Entitlement 添加到您的 Info.plist、您的{ProjectName}.entitlements文件和您在 iTunes Connect 上的 App ID

执行这些步骤后,尝试再次运行您的应用程序。这次应该可以了。

于 2014-10-08T22:43:03.840 回答
5

在 Capabilities 中激活 Health Kit

在此处输入图像描述

如果还是不行

check

  • 您的配置文件是否包含对 HealthKit 的支持?
  • 您的捆绑包标识符是否使用配置文件中引用的相同 ID 并支持 HealthKit?
于 2014-10-16T13:52:15.637 回答
1

一些可能有帮助的附加信息。如果在 HealthKit 功能下,第一步“将健康包权利添加到您的应用程序 id”显示错误,并且您有一个“修复此”按钮,但该按钮无法完成工作......请继续阅读......

很多时候,在处理多个 HealthKit 测试项目后,您可能会发现您的 Bundle ID 与另一个 HealthKit 项目使用的另一个 Bundle ID 匹配(例如,您复制了一个项目以衍生另一个测试)。此争用将在“iOS 开发人员”图片“将健康工具包权利添加到您的应用程序 ID”中的第一个复选标记下显示为错误。不幸的是,当您需要更改“Bundle ID”时,功能部分中列出的错误将其称为“app id”。在您的捆绑包 id 字符串中添加一个数字(或某些字符)以使其唯一。然后 HealthKit 功能设置中的“修复”按钮将起作用。

Bundle ID(又名“App ID”)位于“功能”选项卡左侧的“常规”选项卡下。

于 2016-04-06T12:10:37.993 回答
0

这是因为你没有在目标编辑器中打开 Capabilities 选项卡,然后打开 HealthKit 开关。

要解决权限问题,请在 info.plist 中添加以下键并根据您的项目要求编写原因..。1.Health Update 使用说明 2.Health Records 使用说明 3.Health Share 使用说明

您也可以继续使用免费的开发者帐户进行授权。祝你好运

于 2019-01-30T06:44:10.903 回答
0

我确实添加了两者 NSHealthShareUsageDescriptionNSHealthUpdateUsageDescription确保值大于 12 个字符 - 在某处阅读)Info.plist

接下来,类似于 Jorge Luis Jiménez 截图

  1. 首先进入项目(如图所示)
  2. 打开项目和目标列表
  3. 单击 Apps 目标(无需 watchkit 扩展)
  4. 现在单击右上角的+标志(添加库)
  5. 添加健康套件。
于 2021-04-27T12:29:28.100 回答