跳到主要内容

权限

模块会根据采集时可用的权限来收集用户设备的数据:您的应用申请、且用户授予的权限越多,从用户设备采集到的信息就越多。

注意

INTERNET 权限是必需的,SDK 需要它才能将信息发送到 QI Tech 的服务器。

重要

我们的模块不会主动申请这里描述的权限。因此,为了获得更完整的设备扫描结果,我们建议在调用 startDeviceScan 之前先申请这些权限。

Android

在 Android 平台上,如果以下权限可用,将会被使用:

权限作用必需
INTERNET必需,用于将信息发送到 QI Tech 的服务器。是。
BLUETOOTH采集蓝牙硬件信息。否。
BLUETOOTH_CONNECT采集蓝牙连接信息。自 Android 12(API 31)起需要。否。
READ_CONTACTS读取通讯录。否。
ACCESS_COARSE_LOCATION访问网络信息(基站、运营商等)并据此获取位置(精度较低)。否。
ACCESS_FINE_LOCATION通过 GPS 访问位置(精度较高)。否。
READ_PHONE_STATE网络、SIM 卡、IMEI 及其他电话相关信息。否。
QUERY_ALL_PACKAGES设备上已安装应用的信息。Android 11 及以上设备需要。否。
注意

QUERY_ALL_PACKAGES 权限可能在应用发布时与 Google Play 产生摩擦。可以通过说明申请该权限的原因来解决。

申请权限

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 仅在 Android 12+(API 31+)上需要
if (Platform.Version >= 31) {
permissionsToRequest.push('android.permission.BLUETOOTH_CONNECT' as Permission);
}

const results = await PermissionsAndroid.requestMultiple(permissionsToRequest);

iOS

在 iOS 平台上,如果以下权限可用,将会被使用:

  • location - 采集设备的地理位置数据

Info.plist 文件

向模块开放权限的第一步,是在应用的 Info.plist 文件中配置该权限:

<key>NSLocationWhenInUseUsageDescription</key>
<string>请填写当 iOS 请求地理位置访问权限时,您希望向用户展示的提示信息</string>
注意

为了改善用户在权限申请时的体验,您应按上文所述自定义弹窗中展示的提示信息。

申请权限

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

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

if (result === RESULTS.GRANTED) {
// 权限已授予
}

信息采集

各平台采集的完整信息列表,请参见原生 SDK 的采集页面: