Ves al contingut principal

Native Permissions Checklist

Quick reference for all native permissions required by host apps integrating the Eixam SDK.

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.

Capability map

CapabilityBluetoothForeground locationNotificationsBackground location
Device pairing and commandsRequiredPlatform-dependent for BLE discoveryNoNo
OTA firmware updateRequiredSame prerequisites as connected-device operationRecommended for visible runtime statusNo new requirement
LoRa radio-region detection/applyRequiredRequired to resolve the current countryNoNot required for a foreground check
SOS with locationDevice path onlyRequired for current phone/device positionRecommendedDepends on product/runtime mode
Protection Mode/background telemetryRequired when device-backedRequiredRequired for foreground/runtime notificationsRequired only when the product enables continuous background location

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_NOTIFICATIONS is mandatory for system alerts.
  • Android 12+: BLUETOOTH_SCAN and BLUETOOTH_CONNECT must be declared.
  • Notification Icon: Ensure a monochrome notification icon is available at @mipmap/ic_launcher or similar.

Runtime responsibilities

The SDK abstracts the platform-specific request flows, but the host app owns the initial declaration.

ResponsibilityOwnerSDK Method
Declare native permissionsHost appN/A
Location permissionSDKrequestLocationPermission()
Notification permissionSDKrequestNotificationPermission()
Bluetooth permissionSDKrequestBluetoothPermission()
Notification copyHost appEixamBootstrapConfig.notificationTexts

Permission disclosure preflight

For user-friendly and store-compliant permission UX, inspect the SDK preflight before showing a native prompt:

const requirement = EixamPermissionRequirement.nearbyDevicesBluetooth(
featureKey: 'device_pairing',
);
final preflight = await sdk.preparePermissionPreflight(requirement);

if (preflight.requiresDisclosure) {
final accepted = await showPermissionExplanation(preflight.disclosure!);
if (!accepted) {
await sdk.declinePermissionDisclosure(requirement);
showLimitedFeatureMessage(preflight.limitedFeatureMessage);
return;
}
await sdk.acceptPermissionDisclosure(requirement);
}

await sdk.requestBluetoothPermission();

Customize EixamBootstrapConfig.permissionDisclosureConfig with approved localized product copy. The host renders the disclosure; the SDK returns the correct next native action and limited-feature message.

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.