I'm developing a watchOS nap app that detects when the user falls asleep by monitoring heart rate changes.
== Technical Implementation ==
- HKWorkoutSession (.mindAndBody) for background execution
- HKAnchoredObjectQuery for real-time heart rate data
- CoreMotion for movement detection
== Battery Considerations ==
- Heart rate monitoring ONLY active when user explicitly starts a session
- Monitoring continues until user is awakened OR 60-minute limit is reached
- If no sleep detected within 60 minutes, session auto-ends (user may have abandoned or forgotten to stop)
- App displays clear UI indicating monitoring is active
- Typical session: 15-30 minutes, keeping battery usage minimal
== The Problem ==
HKWorkoutSession affects Activity Rings during the session. Users receive "Exercise goal reached" notifications while resting — confusing.
== What I've Tried ==
-
Not using HKLiveWorkoutBuilder → Activity Rings still affected
-
Using builder but not calling finishWorkout() (per https://developer.apple.com/forums/thread/780220) → Activity Rings still affected
-
WKExtendedRuntimeSession (self-care type) (per https://developer.apple.com/forums/thread/721077) → Only ~10 min runtime, need up to 60 min
-
HKObserverQuery + enableBackgroundDelivery (per https://developer.apple.com/forums/thread/779101) → ~4 updates/hour, too slow for real-time detection
-
Audio background session for continuous processing (suggested in https://developer.apple.com/forums/thread/130287) → Concerned about App Store rejection for non-audio app; if official approves this technical route, I can implement in this direction
-
Some online resources mention "Health Monitoring Entitlement" from WWDC 2019 Session 251, but I could not find any official documentation for this entitlement. Apple Developer Support also confirmed they cannot locate it?
== My Question ==
Is there any supported way to:
- Monitor heart rate in background for up to 60 minutes
- WITHOUT affecting Activity Rings or creating workout records?
If this requires a special entitlement or API access, please advise on the application process. Or allow me to submit a code-level support request.
Any guidance would be greatly appreciated. Thank you!