Running HealthKit queries in the background
01 Jun 2020
Recently I’ve been trying to use HKObserver
to monitor queries from HealthKit in the background. I wrote a simple integration where my app would print to the console every time a new workout was recorded. However, it was never triggered, except when I opened my app in the foreground.
I spent more time than I’d like to admit on StackOverflow and Apple’s developer forums trying to figure this out. What on Earth was I doing wrong? I played around with my app’s background entitlements, I set breakpoints all over the place, I thought I’d tried everything.
Eventually I found the answer, and it’s a very simple one. I didn’t have background app refresh enabled on my phone 🤦♂️. Enable that and it’ll work fine.
PS: There is some confusion as to whether your app needs to explicitly use the background fetch entitlement to use HealthKit in the background. I tried both and you don’t need the entitlement.
Thanks for reading.
To get in touch, email me or find me on Mastodon or Twitter.
If you liked this post, you'll love my iOS apps. Check them out below.