Skip to main content
Version: 0.1.0

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_NOTIFICATIONS is required on Android 13+ for local and push notifications
  • For Android 12+, declare BLUETOOTH_SCAN and BLUETOOTH_CONNECT
  • Legacy BLUETOOTH and BLUETOOTH_ADMIN are still useful for Android 11 and earlier compatibility
  • flutter_local_notifications and shared_preferences do not require storage permissions
  • Keep a valid notification icon configured for Android (e.g., @mipmap/ic_launcher or 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_SCAN with usesPermissionFlags="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.plist key is required for the current notification flow
  • shared_preferences does 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

ResponsibilityOwner
Declare native permissions in Manifest/Info.plistHost app
Request location permission at runtimeSDK (via requestLocationPermission())
Request notification permission at runtimeSDK (via requestNotificationPermission())
Request Bluetooth permission at runtimeSDK (via requestBluetoothPermission())
Configure Android notification icon/channelHost app
Review background tracking implicationsHost app
Review BLE background implicationsHost app