Skip to main content

Permissions

The module collects data from the user's device according to the permissions available at collection time: the more permissions your application requests and the user grants, the more information is collected from the user's device.

Warning

The INTERNET permission is mandatory for the SDK to be able to send the information to QI Tech's servers.

Important

Our module does not request the permissions described here. Therefore, to ensure a more complete device scan, we recommend collecting these permissions before calling startDeviceScan.

Android

On the Android platform, the following permissions are used if available:

PermissionPurposeRequired
INTERNETMandatory, to send the information to QI Tech's servers.Yes.
BLUETOOTHCollection of Bluetooth hardware information.No.
BLUETOOTH_CONNECTCollection of Bluetooth connection information. Required from Android 12 (API 31) onwards.No.
READ_CONTACTSReading the contact list.No.
ACCESS_COARSE_LOCATIONAccess to network information (Antenna, carrier...) and to the location through it (less precise).No.
ACCESS_FINE_LOCATIONAccess to the location through GPS (more precise).No.
READ_PHONE_STATENetwork, SIM, IMEI and other telephony information.No.
QUERY_ALL_PACKAGESInformation about applications installed on the device. Required for Android 11 devices onwards.No.
Warning

The QUERY_ALL_PACKAGES permission may cause friction with Google Play when releasing the app. To resolve it, you can describe the reason for requesting the permission.

Requesting the permissions

import { Platform, PermissionsAndroid, Permission } from 'react-native';

const permissionsToRequest: Permission[] = [
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,
PermissionsAndroid.PERMISSIONS.READ_PHONE_STATE,
PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
];

// BLUETOOTH_CONNECT is only needed on Android 12+ (API 31+)
if (Platform.Version >= 31) {
permissionsToRequest.push('android.permission.BLUETOOTH_CONNECT' as Permission);
}

const results = await PermissionsAndroid.requestMultiple(permissionsToRequest);

iOS

On the iOS platform, the following permission is used if available:

  • location - Collection of the device's geolocation data

Info.plist file

The first step to make permissions available to the module is to configure the permission in the application's Info.plist file:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Add the message you want to show the user when iOS requests the geolocation access permission</string>
Warning

To improve the user experience when permissions are requested, you should customize the message shown in the request pop-up as described above.

Requesting the permissions

import { request, PERMISSIONS, RESULTS } from 'react-native-permissions';

const result = await request(PERMISSIONS.IOS.LOCATION_WHEN_IN_USE);

if (result === RESULTS.GRANTED) {
// permission granted
}

Information collection

For the full list of information collected on each platform, see the native SDK collection pages: