Common Issues
HealthKit permissions not showing (iOS)
HealthKit permissions not showing (iOS)
Symptoms: The health permissions dialog doesn’t appear when calling
requestAuthorization().Solutions:-
Verify Info.plist configuration:
-
Check HealthKit capability in Xcode:
- Open
ios/Runner.xcworkspace - Select target → Signing & Capabilities
- Ensure HealthKit is listed
- Open
- Run on physical device: HealthKit doesn’t work in the iOS Simulator. Always test on a real device.
- Check provisioning profile: Your Apple Developer account must have HealthKit capability enabled for the App ID.
Health Connect permissions not showing (Android)
Health Connect permissions not showing (Android)
Symptoms: Permission dialog doesn’t appear on Android.Solutions:
- Ensure Health Connect is installed: Health Connect must be installed on the device. It’s pre-installed on Android 14+ but may need to be installed from Play Store on older versions.
-
Set provider before requesting authorization:
-
Check minSdk version:
Your
android/app/build.gradlemust haveminSdk 29or higher. - Verify the Activity is set (if using native Android directly): The Flutter plugin handles this automatically, but if you see permission launcher issues, try rebuilding the app.
Background sync not working (iOS)
Background sync not working (iOS)
Symptoms: Data only syncs when the app is in the foreground.Solutions:
-
Verify background modes in Info.plist:
-
Check Background App Refresh setting:
- Go to iOS Settings → Your App → Background App Refresh
- Ensure it’s enabled
- Check Low Power Mode: Background tasks are suspended when Low Power Mode is active.
- Wait for system scheduling: iOS controls when background tasks run. Initial syncs may take 15+ minutes to trigger.
Background sync not working (Android)
Background sync not working (Android)
Symptoms: Data only syncs when the app is in the foreground on Android.Solutions:
- Check battery optimization: Some Android manufacturers aggressively kill background services. Ask users to disable battery optimization for your app in Settings.
-
Verify notification permissions:
On Android 13+, the SDK uses a foreground service notification during sync. Ensure
POST_NOTIFICATIONSpermission is granted. -
Check provider connection:
Verify the health provider is properly connected:
Sign-in fails with error
Sign-in fails with error
Symptoms:
SignInException when calling signIn().Solutions:- Check token expiration: Access tokens expire. Ensure your backend generates fresh tokens.
-
Verify credentials:
Ensure you’re providing either (
accessToken+refreshToken) orapiKey: - Check network connectivity: Ensure the device can reach your Open Wearables host.
-
Check SignInException details:
Data not appearing in Open Wearables
Data not appearing in Open Wearables
Symptoms: Sync completes but data doesn’t show up in the API.Solutions:
-
Check sync status:
- Verify health data exists: Open Apple Health or Health Connect and confirm data exists for the requested types.
- Check date range: The SDK syncs data incrementally. New data may not exist yet.
-
Reset anchors for full sync:
- Check permissions: Users may have denied specific data types even if they approved the overall request.
NotConfiguredException thrown
NotConfiguredException thrown
Symptoms: Exception when calling SDK methods.Solution:
Ensure
configure() is called before any other SDK methods:NotSignedInException thrown
NotSignedInException thrown
Symptoms: Exception when starting sync without signing in.Solution:
Check sign-in status before sync operations:
Samsung Health not available
Samsung Health not available
Symptoms: Samsung Health provider not found on
getAvailableProviders().Solutions:- Samsung Health must be installed on the device.
- Samsung devices only - Samsung Health is typically only available on Samsung devices.
- Try Health Connect instead as it works on all Android 10+ devices:
HealthKit Entitlement Issues (iOS)
If you see “Missing HealthKit entitlement” errors:-
In Xcode:
- Target → Signing & Capabilities → Add HealthKit
- Check “Background Delivery” for background updates
-
In Apple Developer Portal:
- App IDs → Your App → Capabilities
- Enable HealthKit
- Regenerate provisioning profiles after making changes
Background Delivery Limitations (iOS)
iOS has strict limits on background execution:| Factor | Impact |
|---|---|
| Battery Level | Background tasks paused below 20% |
| Low Power Mode | All background tasks suspended |
| User Behavior | iOS learns when you use the app and schedules accordingly |
| Network | Background tasks require network connectivity |
Testing Background Sync
iOS
To test background sync during development:- Run app on device
- Navigate to home screen
- Wait 15+ minutes (or use Xcode’s debug menu)
- Check logs for sync activity
- Debug → Simulate Background Fetch
Android
- Run app on device or emulator
- Minimize the app
- The SDK uses WorkManager which should trigger relatively quickly
- Check logs via
MethodChannelOpenWearablesHealthSdk.logStream
Debugging Tips
Enable Debug Logging
Check Stored Credentials
Monitor Sync Progress
Force Fresh Start
If things are in a bad state:Getting Help
If you’re still experiencing issues:GitHub Issues
Report bugs or request features on the SDK repository.
Discussions
Ask questions and get help from the community.
- Flutter version (
flutter --version) - SDK version (from
pubspec.lock) - Platform (iOS/Android) and OS version
- Device model
- Relevant logs and error messages
- Steps to reproduce

