Skip to main content

Overview

The SDK repository includes a fully functional example app that demonstrates how to use SDK to sync Apple Health and Android health data with Open Wearables. It’s also a great way for individuals to sync their personal health data and get it into Open Wearables in minutes! Use it to test the SDK, explore the code, and see how everything works together.

Example App Source

View the example app source code on GitHub.
Don’t want to build the app yourself? Join our Discord and ask for a TestFlight beta invitation. The app will also be available in the App Store soon!

What You’ll See

The example app demonstrates the complete integration flow:
  1. Invitation Code - Connect via invitation code (host + code → redeem → sign in)
  2. SDK Configuration - Initialize the SDK with proper host settings
  3. Authentication - Sign in with credentials from the dashboard
  4. Provider Selection - On Android, choose between Samsung Health and Health Connect
  5. Permission Request - Request health data permissions from the user
  6. Background Sync - Enable automatic health data synchronization
  7. Sync Status - Monitor sync progress and handle interruptions
  8. Log Viewer - Browse SDK logs with search

See the full flow in action

Watch how data flows from device setup through syncing to the dashboard and API.

Running the Example App

1

Clone the repository

git clone https://github.com/the-momentum/open_wearables_health_sdk.git
cd open_wearables_health_sdk/example
2

Install dependencies

flutter pub get
3

iOS Setup

Open ios/Runner.xcworkspace in Xcode and:
  1. Select your development team in Signing & Capabilities
  2. Ensure HealthKit capability is enabled
  3. Update the bundle identifier if needed
4

Android Setup (optional)

For Android:
  1. Ensure Health Connect is installed on the device (or Samsung Health for Samsung devices)
  2. No additional Xcode/Android Studio configuration needed
5

Get credentials from Open Wearables Dashboard

  1. Go to your Open Wearables dashboard
  2. Create a new user or select an existing one
  3. Generate an invitation code for the user
  4. Copy the invitation code and host URL
6

Run the app

flutter run
For iOS: Run on a physical iOS device - HealthKit doesn’t work in the simulator. For Android: Run on a device or emulator with Health Connect installed.
7

Connect and sync

  1. Enter the host URL and invitation code
  2. Tap Connect to redeem the code and sign in
  3. On Android, select a health provider (Samsung Health or Health Connect)
  4. Grant health permissions when prompted
  5. Tap Start Sync to begin background synchronization
  6. Check the dashboard to see your health data appear!

Example App Code Structure

The example app demonstrates best practices for SDK integration:
example/
├── lib/
│   └── main.dart          # Main app with SDK integration
├── ios/
│   └── Runner/
│       └── Info.plist     # HealthKit permissions & background modes
├── android/
│   └── app/
│       └── src/main/
│           └── AndroidManifest.xml
└── pubspec.yaml           # Dependencies

Key Code Sections

SDK Initialization:
await OpenWearablesHealthSdk.configure(
  host: hostUrl,
);
Sign In (via invitation code):
// Redeem invitation code to get credentials
final response = await http.post(
  Uri.parse('$host/api/v1/sdk/invitation-codes/$code/redeem'),
);
if (response.statusCode != 200) {
  throw Exception('Invitation redeem failed: ${response.statusCode}');
}
final data = json.decode(response.body);

// Sign in with returned credentials
await OpenWearablesHealthSdk.signIn(
  userId: data['user_id'],
  accessToken: data['access_token'],
  refreshToken: data['refresh_token'],
);
Provider Selection (Android):
if (Platform.isAndroid) {
  final providers = await OpenWearablesHealthSdk.getAvailableProviders();
  if (providers.isEmpty) {
    throw Exception('No Android health provider is available');
  }
  final selectedProvider = providers.contains(AndroidHealthProvider.healthConnect)
      ? AndroidHealthProvider.healthConnect
      : providers.first;
  await OpenWearablesHealthSdk.setProvider(selectedProvider);
}
Request Permissions:
await OpenWearablesHealthSdk.requestAuthorization(
  types: [
    HealthDataType.steps,
    HealthDataType.heartRate,
    HealthDataType.sleep,
    HealthDataType.workout,
    // ... more types
  ],
);
Start Background Sync:
await OpenWearablesHealthSdk.startBackgroundSync();
Log Stream:
MethodChannelOpenWearablesHealthSdk.logStream.listen((message) {
  // Display in logs page
});

Testing the Full Flow

1

Set up Open Wearables locally (optional)

If you want to test with a local instance:
git clone https://github.com/the-momentum/open-wearables.git
cd open-wearables
docker compose up -d
Then use your local URL as the host when connecting in the app.
2

Create test data

iOS: Add some health data to Apple Health on your device:
  • Open the Health app
  • Browse → Steps → Add Data
  • Add a few data points
Android: Add data via Health Connect or Samsung Health.
3

Trigger sync and verify

  1. In the example app, tap Sync Now
  2. Check the Open Wearables dashboard
  3. Your health data should appear under the user’s timeseries!

Troubleshooting the Example App

Make sure you’re running on a physical device, not the simulator. HealthKit is not available in the iOS Simulator.
  • Verify your invitation code is correct and hasn’t been used already
  • Check that the host URL is the API URL (not the dashboard URL)
  • Check that your Open Wearables instance is running
  • Ensure network connectivity
  • Confirm health permissions were granted (check iOS Settings → Privacy → Health, or Android Settings → Health Connect)
  • Make sure there’s actual health data in Apple Health / Health Connect
  • Try tapping Sync Now to trigger an immediate sync
  • Check the Logs page in the app for errors
  • Select your development team in Xcode
  • Update the bundle identifier to something unique
  • Ensure your Apple Developer account has HealthKit capability
  • For Health Connect: ensure it’s installed from Play Store (pre-installed on Android 14+)
  • For Samsung Health: only available on Samsung devices with Samsung Health installed

Next Steps

Integration Guide

Integrate the SDK into your own app.

Troubleshooting

Common issues and solutions.