【问题标题】:How to ask for LOCATION PERMISSION in React Native?如何在 React Native 中请求位置权限?
【发布时间】:2018-09-12 06:42:19
【问题描述】:

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

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

但我注意到该权限是在未请求用户许可的情况下授予的。

这违反了谷歌的规则吗?

如果是,我如何显示请求权限的对话框?

【问题讨论】:

  • 看看this。确保您使用location 而不是photo,其他一切都应该简单明了。
  • 你指的是哪个平台,android 还是ios
  • @PritishVaidya Android :)
  • 如果你不想使用外部库,你可以试试 geolocation,它是 React-Native 自带的,我试过了,但在某个时候卡住了,不记得了,哈哈。

标签: android react-native


【解决方案1】:

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

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

查看此link 了解更多信息。

对于 iOS,您必须填写 .plist 文件并弹出权限。无需显式处理。

【讨论】:

    【解决方案2】:

    根据安卓docs

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

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

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

    要手动授予权限,您必须在每个请求之前使用 PermissionsAndroid,这在 link

    中有很好的提及
    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

    【讨论】:

      【解决方案3】:

      我认为您应该考虑使用 react-native-permissions 进行此操作

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-31
        • 1970-01-01
        • 1970-01-01
        • 2019-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多