Native Permissions Checklist
Quick reference for all native permissions required by host apps integrating the Eixam SDK.
:::note Local persistence
The SDK uses shared_preferences for lightweight local persistence. It requires no extra Android Manifest permissions and no extra iOS Info.plist keys. Data is stored inside the app sandbox managed by Android/iOS.
:::
Android — AndroidManifest.xml
Minimum permissions for current SDK capabilities:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<!-- Bluetooth / BLE -->
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
If you later enable background tracking:
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
Android notes
POST_NOTIFICATIONSis required on Android 13+ for local and push notifications- For Android 12+, declare
BLUETOOTH_SCANandBLUETOOTH_CONNECT - Legacy
BLUETOOTHandBLUETOOTH_ADMINare still useful for Android 11 and earlier compatibility flutter_local_notificationsandshared_preferencesdo not require storage permissions- Keep a valid notification icon configured for Android (e.g.,
@mipmap/ic_launcheror a monochrome notification icon) - If custom notification channels are used, review them together with the SDK defaults
- If BLE scanning should never be used to infer physical location, consider marking
BLUETOOTH_SCANwithusesPermissionFlags="neverForLocation"
iOS — Info.plist
Minimum keys for current SDK capabilities:
<key>NSLocationWhenInUseUsageDescription</key>
<string>EIXAM needs your location to power tracking and SOS position snapshots.</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>EIXAM needs Bluetooth access to pair and communicate with the safety device.</string>
If you later enable background tracking:
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>EIXAM may need location in background for continuous safety tracking.</string>
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
If you later enable background BLE communication:
<key>UIBackgroundModes</key>
<array>
<string>bluetooth-central</string>
</array>
iOS notes
- Local and push notification permission is requested at runtime — no extra
Info.plistkey is required for the current notification flow shared_preferencesdoes not require any extra iOS permission- If remote push notifications are needed later, Apple Push Notification capabilities must be enabled in Xcode
- If background execution is needed for long-running tracking or BLE flows, review background modes carefully
- The host app must still provide the Bluetooth usage description even though the SDK can request the permission at runtime
Runtime responsibilities
| Responsibility | Owner |
|---|---|
Declare native permissions in Manifest/Info.plist | Host app |
| Request location permission at runtime | SDK (via requestLocationPermission()) |
| Request notification permission at runtime | SDK (via requestNotificationPermission()) |
| Request Bluetooth permission at runtime | SDK (via requestBluetoothPermission()) |
| Configure Android notification icon/channel | Host app |
| Review background tracking implications | Host app |
| Review BLE background implications | Host app |