How to solve this error with healthkit?

2020-05-29 02:57发布

I'm adding code for healthkit in my ios Swift app, but I'm getting an error...

 /* 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")
}

}

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

How can solve this?

Thanks!

6条回答
我命由我不由天
2楼-- · 2020-05-29 03:39

Some additional info that might help. If, under the HealthKit Capabilities the first step "add health kit entitlement to your app id" shows an error, and you have a "Fix This" button which does not do the job... read on...

Many times after working on multiple HealthKit test projects, you may find you have a Bundle ID that matches another Bundle ID used with another HealthKit project (say you duplicated the one project to spin off another test). This contention will show up as an error under the first checkmark in "iOS dev"s picture "add health kit entitlement to your app id". The error listed in the capabilities section unfortunately calls it an "app id" when you need to change the "Bundle ID". Add a number (or some character) in your bundle id string to make it unique. Then the "Fix" button in the HealthKit capabilities settings will work.

The Bundle ID (aka "App ID") is found under the "General" tab to the left of the "Capabilities" tab.

查看更多
Bombasti
3楼-- · 2020-05-29 03:49

I spent 3 days trying to figure out what was the problem. I found the solution with those steps:

enter image description here

  1. First go to the project (As I show in the image)
  2. Open projects and target lists
  3. Select nameApp WatchKit Extension
  4. Go to Capabilities tab, press on in Health Kit and voila... it is working for me.

I am using iOS 9.3.2 and Xcode 7.3.1

查看更多
家丑人穷心不美
4楼-- · 2020-05-29 03:49

This is bcz you have not Open the Capabilities tab in the target editor, and turn on the HealthKit switch.

and to resolve permission issues , add the following keys in info.plist and write causes.. according to your project requirements. 1.Health Update Usage Description 2.Health Records Usage Description 3.Health Share Usage Description

You can go ahead with free developer account also for authorisation purpose. good luck

查看更多
SAY GOODBYE
5楼-- · 2020-05-29 03:50

Activate Health kit in Capabilities

enter image description here

If still not worked

check:

  • Does your provisioning profile includes support for HealthKit?
  • Does your bundle identifier use the same ID referenced in the provisioning profile with support for HealthKit?
查看更多
Root(大扎)
6楼-- · 2020-05-29 03:52

Both of the above answers should be tried first. If however

  1. You're sure the capability has been activated
  2. You're confident your app id associated with your provisioning profile has healthkit turned on and matches the app's bundle id

Then try and force the build to use that specific provisioning profile by selecting your target and going to

build settings -> code signing -> provisioning profile

and selecting it manually.

I've run into cases where get the above error in debug if 'automatic selection' is being used

查看更多
萌系小妹纸
7楼-- · 2020-05-29 03:58

That error is due to the fact that you have not added the HealthKit Entitlement to your target.

1) Go to your project settings in Xcode. 2) From there, navigate to the "Capabilities" Tab. 3) Scroll down until you see "HealthKit" and flip the switch to on. 4) Xcode will now add the HealthKit Entitlement to you Info.plist, your {ProjectName}.entitlements file, and your App ID on iTunes Connect

After following these steps, try to run your app again. This time around it should work.

查看更多
登录 后发表回答