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 (Manifest)
- iOS (Info.plist)
Android — AndroidManifest.xml
Add these top-level permissions to your <manifest> tag:
<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" />
<!-- Optional: Background Tracking -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
Android Recommendations
- Android 13+:
POST_NOTIFICATIONSis mandatory for system alerts. - Android 12+:
BLUETOOTH_SCANandBLUETOOTH_CONNECTmust be declared. - Notification Icon: Ensure a monochrome notification icon is available at
@mipmap/ic_launcheror similar.
iOS — Info.plist
Add these keys to your Info.plist dictionary:
<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>
<!-- Optional: Background Features -->
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>EIXAM may need location in background for continuous safety tracking.</string>
<key>UIBackgroundModes</key>
<array>
<string>location</string>
<string>bluetooth-central</string>
</array>
iOS Recommendations
- Bluetooth Description: Even if the SDK requests permission, Apple requires the usage description key to be present in the host app.
- Background Modes: Only include
locationorbluetooth-centralif your app logic genuinely requires background continuity.
Runtime responsibilities
The SDK abstracts the platform-specific request flows, but the host app owns the initial declaration.
| Responsibility | Owner | SDK Method |
|---|---|---|
| Declare native permissions | Host app | N/A |
| Location permission | SDK | requestLocationPermission() |
| Notification permission | SDK | requestNotificationPermission() |
| Bluetooth permission | SDK | requestBluetoothPermission() |
| Notification copy | Host app | EixamBootstrapConfig.notificationTexts |
OS SOS widget setup
OS-level SOS widgets add native setup requirements, not a new SDK runtime permission category.
- Android widget registration does not add dangerous runtime permissions by itself. The host app still needs normal SDK permissions when the widget activation enters SOS, location, notification, Bluetooth, or background flows.
- iOS WidgetKit integrations require host-app setup such as a WidgetKit extension, App Group entitlement for display-only snapshots, and URL scheme or deep-link handling.
- Widget snapshots should be treated as display-only and reviewed before exposing sensitive status text.
See OS SOS Widget for guarded activation requirements.