HealthKit data inaccessible in background

2020-03-15 10:29发布

问题:

I want to pull HealthStore data in the background using background fetch but I keep getting an error: Error Domain=com.apple.healthkit Code=6 "Protected health data is inaccessible" UserInfo=0x17026fdc0 {NSLocalizedDescription=Protected health data is inaccessible}.

Apple states:

Because the HealthKit store is encrypted, your app cannot read data from the store when the phone is locked. This means your app may not be able to access the store when it is launched in the background.

Any workaround to access data in the background? Is the HKObserverQuery the only way to get data in the background?

回答1:

As stated in the documentation you quoted there's no way to access HealthKit data while the phone is locked. However, you can access the data if the phone is unlocked and your app is in the background. So if background fetch happens while the phone is unlocked you will be able to access the data.