我无法让HealthKit工作。失踪的权利

时间:2014-11-27 02:25:00

标签: ios health-kit

我很难让HealthKit为我的iOS应用程序工作。我已经完成了所有步骤I have found so far,似乎没有解决我的问题我在尝试授权Healthkit时遇到此错误:

Error Domain=com.apple.healthkit Code=4 "Missing com.apple.developer.healthkit entitlement." UserInfo=0x78fa24e0 {NSLocalizedDescription=Missing com.apple.developer.healthkit entitlement.}

这是我要求授权的代码:

    if([HKHealthStore isHealthDataAvailable]) {

        self.healthStore = [[HKHealthStore alloc] init];

        [self.healthStore requestAuthorizationToShareTypes:nil readTypes:[self dataTypesToRead] completion:^(BOOL success, NSError *error) {

            if (!success) {
                NSLog(@"HK Error: %@", error);
                [self presentHealthAlert:@"You didn't allow APP to access HealthKit Data. Please go to Settings and set up APP permissions." withTitle:@"Error"];
            } else {
                [self presentHealthAlert:@"Thank You For Access" withTitle:@"Success"];
            }
        }];

    } else {
        [self presentHealthAlert:@"Health Data Not Available" withTitle:@"Success"];
    }

是的,我已经在我的项目Capabilites上启用了它,是的,我已经在我的开发中心应用程序ID中启用了它。还有什么我可能会失踪的吗?

7 个答案:

答案 0 :(得分:6)

我在watchOS 2应用程序中遇到此问题。解决方案是确保我为两者 iOS应用手表扩展程序启用了HealthKit权利。

我错误地认为iOS应用程序的开关将由手表扩展程序继承。

答案 1 :(得分:1)

您必须确保单击Xco​​de左侧的程序(文件层次结构的顶部)。您将进入主窗口(右侧)的常规设置屏幕,您将在其中看到捆绑包标识符,部署目标和其他设置。单击顶部显示功能的选项卡。现在,您将看到一个包含HealthKit的可切换列表。您必须先在此处激活它,然后才能在应用程序中使用它。

编辑:这是来自Xcode的图片,如果您不熟悉设置依赖项或其他程序特定设置,可能会帮助您找到它。

Screenshot showing where the list with HealthKit is

在右侧列表中,您将看到HealthKit。一旦你打开它就会检查几件事,并确认你可以使用它。

答案 2 :(得分:1)

有点旧,但对于有问题的其他人,我不得不在XCode 6.2(首选项 - >帐户)中手动刷新我的配置文件。

答案 3 :(得分:1)

在达到我的智慧结束后,我终于到了这里。没有任何工作,我明确启用了HealthKit权利,所以最后我重新启动了手机。瞧。重新启动清除了丢失的权利错误。

答案 4 :(得分:1)

  1. 点击观看应用扩展程序目标。

  2. 点击功能

  3. 向下滚动到底部并启用 HealthKit

  4. enter image description here

答案 5 :(得分:0)

我设法通过确保我注册了设备来获得我的权利。一旦我在模拟器下显示我的iPhone并且我在应用程序的标识部分下没有任何未解决的问题,所有加载都可以。

答案 6 :(得分:0)

您可能会发现尽管您已在xcode中启用了HealthKit权利,但仍有第二个权利文件不包含healthkit boolean。我发现虽然明显的权利文件(在顶层)具有正确的信息,但是在不包含healthkit权利的资源下创建了不同的权利文件。修复该文件解决了我的问题。