如何在React Native中请求LOCATION PERMISSION?

时间:2018-09-12 06:42:19

标签: android react-native

我正在开发一个简单的应用程序,用于显示您的当前位置(纬度和经度)。我正在使用以下功能:

- navigator.geolocation.getCurrentPosition
- navigator.geolocation.watchPosition

但是我注意到,授予权限是在不要求用户许可的情况下进行的。

这是否是Google的规定?

如果是,我如何显示要求许可的对话框?

3 个答案:

答案 0 :(得分:4)

对于android,您可以通过从“ react-native”导入来使用PermissionAndroid。

从'react-native'导入{PermissionsAndroid}; //

查看此link以获得更多信息。

对于iOS,您必须填写.plist文件,然后弹出该文件以获取权限。无需显式处理。

答案 1 :(得分:2)

按照android docs

  

Android应用必须获得访问敏感用户数据(例如联系人和SMS)以及某些系统功能(例如相机和互联网)的权限

     

如果设备运行的是 Android 6.0(API级别23)或更高版本,并且应用程序的 targetSdkVersion为23 或更高版本,则不会通知用户任何应用程序安装时的权限。您的应用必须要求用户在运行时授予危险权限

     

如果设备在任何版本的Android上运行 Android 5.1.1(API级别22)或更低版本,或者应用程序的 targetSdkVersion为22 或更低版本,系统会自动自动要求用户在安装时为您的应用授予所有危险权限

要手动授予权限,您必须在此link

中提到的每个请求之前使用 PermissionsAndroid
try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.CAMERA,
      {
        'title': 'Cool Photo App Camera Permission',
        'message': 'Cool Photo App needs access to your camera ' +
                   'so you can take awesome pictures.'
      }
    )
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log("You can use the camera")
    } else {
      console.log("Camera permission denied")
    }
  } catch (err) {
    console.warn(err)
  }

提到了危险权限列表here

答案 2 :(得分:1)

我认为您应该考虑使用react-native-permissions

Permissions.request('location', { type: 'always' }).then(response => {
  this.setState({ locationPermission: response })
})