Skip to content

How HealthBridge works in Unreal Engine

HealthBridge presents one Unreal-native API while selecting a platform provider for the current runtime.

Layer Purpose
FHealthBridgeService Static C++ entry point and active-provider owner
UHealthBridgeSubsystem Game-instance facade for Blueprint and UObject callers
IHealthBridgeProvider Contract implemented by mock, HealthKit, and Health Connect providers
FHealthBridgeEvents Native lifecycle, permission, read, write, route, delete, and heart-rate events
UHealthBridgeSettings Project-owned permissions and mock configuration
FHealthDataTypeRegistry Unified IDs, platform support, permissions, categories, and write support

Use UHealthBridgeSubsystem when:

  • You are working in Blueprint.
  • Your UObject code already has a game instance.
  • You want Blueprint-assignable events and dynamic completion delegates.

Use FHealthBridgeService when:

  • You are writing native C++ systems.
  • A static service fits your architecture.
  • You want native TFunction callbacks and delegates.

Both paths use the same active provider and deliver completions on the game thread.

  • Editor and desktop: FMockHealthProvider.
  • iOS device: HealthKit provider.
  • Android device: Health Connect provider.

Do not infer device readiness from an editor success. The mock provider proves your integration logic, not mobile permissions, signing, native packaging, or real records.

Blueprint or C++
Subsystem or static service
Active platform provider
HealthKit, Health Connect, or mock data
Game-thread completion and events

Settings and generated platform configuration

Section titled “Settings and generated platform configuration”

The setup wizard and permission editor save structured settings in DefaultGame.ini. Platform packaging derives permission and type information from those settings, but Android can request only permissions present in the final manifest and iOS still requires valid HealthKit signing and usage text.

Not every provider supports every feature. Gate optional UI with SupportsCapability and handle failed results for routes, writes, deletes, or heart-rate monitoring instead of assuming parity.