React Native应用如何仅请求大致位置权限?
React Native 如何仅请求大致位置权限(取消"Precise:On"默认状态)
无需修改设备默认设置,仅需调整应用的权限请求代码和配置文件即可实现需求,分平台操作如下:
Android 端处理
- 替换权限类型:你当前请求的
ACCESS_FINE_LOCATION是精确定位权限,需改为ACCESS_COARSE_LOCATION(大致位置权限),修改后的代码如下:if (Platform.OS === 'android') { auth = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION, { message: '应用需要获取您的大致位置', title: '位置权限申请', buttonPositive: '允许', }, ); } - 更新Manifest配置:在
android/app/src/main/AndroidManifest.xml中,确保声明的是大致位置权限:
修改后,Android系统的权限弹窗将只会请求大致位置访问权限,不会显示精确定位相关选项。<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 移除或注释掉ACCESS_FINE_LOCATION权限声明 --> <!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> -->
iOS 端处理
iOS 14+支持模糊定位(大致位置),需通过配置默认开启该模式:
- 添加Info.plist配置:在
ios/[你的项目名称]/Info.plist中新增以下键值对,设置默认使用模糊定位:<key>NSLocationDefaultAccuracyReduced</key> <true/> - 权限请求代码:原有代码可保留,但添加上述配置后,权限弹窗会默认以大致位置模式请求,不再默认显示"Precise:On"状态。若需明确告知用户需求,可调整提示文案:
} else if (Platform.OS === 'ios') { auth = await Geolocation.requestAuthorization('whenInUse'); }
(用户提供的弹窗截图:显示iOS权限弹窗中"Precise"选项处于"On"状态)
内容的提问来源于stack exchange,提问作者Pankaj Sonava
相关产品推荐
相关产品推荐

