Permissions
Permission management differs between Android and iOS operating systems.
Android
The following permissions are directly included in the manifest file of the SDK:
- INTERNET: requred to connect to the GiPStech Server;
- ACCESS_NETWORK_STATE: required to know the quality of the internet connection;
- ACCESS_FINE_LOCATION: required to access GPS position;
- ACCESS_COARSE_LOCATION: required to access Network position;
- READ_EXTERNAL_STORAGE: required to read data;
- WRITE_EXTERNAL_STORAGE (for API level up to 28): required to save data;
- BLUETOOTH_SCAN (since API level 31): required to scan Bluetooth Beacons;
- BLUETOOTH (for API level up to 30): required to scan Bluetooth Beacons;
- BLUETOOTH_ADMIN (for API level up to 30): required to scan Bluetooth Beacons;
In addition, the following permissions may be required to enable advanced features:
- BLUETOOTH_ADVERTISE (since API level 31): required to act as a Bluetooth Beacons;
- CAMERA: required to access Camera when using Visual Positioning;
- ACCESS_WIFI_STATE: required to scan WiFi signal when using WiFi localization;
- CHANGE_WIFI_STATE: required to scan WiFi signal when using WiFi localization;
- ACCESS_BACKGROUND_LOCATION: required to work in background.
Furthermore, applications shall explicitly ask the user for some of these pemissions. Please refer to the Android documentation for information on how to request permissions.
ARCore
The MDK can leverage Google ARCore to enhance accuracy or enable Visual Positioning. If ARCore is required, you must enable AR in your app by following the instructions provided in the Google documentation.
iOS
On iOS, you must include the following permission descriptions in your project's Info.plist file:
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to the location.</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>This app needs access to the bluetooth.</string>
Permissions for accessing the network, location, Bluetooth, and other features are requested from the user when needed. However, the SDK assumes that the necessary permissions have already been granted. To prevent potential errors, the app must ensure that these permissions have been requested in advance.