React Native:如何检查是否已授予地理位置权限

问题描述 投票:0回答:2

我知道我可以使用 React Native 在 iOS 上请求地理定位权限,如下所示:

await navigator.geolocation.requestAuthorization()

但是,我如何知道用户是否授予了权限?上面的函数没有返回任何内容。

我想避免使用第三方库来执行此操作,如这个答案所示: 确定是否使用 React Native 启用地理定位

最受欢迎的 Permissions 3rd 方库已经 10 个月没有更新了,并且不支持最新版本的 React Native。

react-native permissions react-native-ios
2个回答
0
投票

这就是我所能弄清楚的:https://snack.expo.io/@zvona/geolocation-permissions

因此,该函数将如下所示:

checkPermission = () => {
  navigator.geolocation
  .getCurrentPosition(
    () => this.setState({permission: 'GRANTED'}),
    () => this.setState({permission: 'DENIED'})
  );
}

这可以在某些操作中调用,或者例如在

componentDidMount

如果您需要重定向用户以允许访问设置中的位置,请参阅我的其他示例:https://snack.expo.io/@zvona/open-app-settings其中代码行:

Linking.openURL("app-settings:");

就可以了。


0
投票

我使用了react-native-geolocation-service包中的地理定位来解决ios和android的这个问题

const getLocationServicesStatus = async () => {try {
if (Platform.OS === 'android') {
  const locationStatus = await PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
  );
  return locationStatus === PermissionsAndroid.RESULTS.GRANTED;
}

if (Platform.OS === 'ios') {
  const locationStatus = await geolocation.requestAuthorization(
    'whenInUse',
  );
  return locationStatus === 'granted';
}

return null } catch (error) {
logger.warn('Error checking location status:', error);
return null;

} };

© www.soinside.com 2019 - 2024. All rights reserved.