【问题标题】:React Native: How to check if geolocation permission has been grantedReact Native:如何检查是否已授予地理定位权限
【发布时间】:2018-12-04 17:07:22
【问题描述】:

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

await navigator.geolocation.requestAuthorization()

但是,我如何知道用户是否已授予权限?上面的函数什么都不返回。

我想避免使用第三方库来执行此操作,如以下答案所示: Determining if geolocation enabled with react native

最受欢迎的 Permissions 3rd 方库 10 个月未更新,不支持最新版本的 React Native。

【问题讨论】:

    标签: react-native permissions react-native-ios


    【解决方案1】:

    这就是我能想到的: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 where code line:

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

    成功了。

    【讨论】:

    • 如果不先调用navigator.geolocation.requestAuthorization(),这将崩溃。见这里:stackoverflow.com/questions/53605192/…
    • @etayluz 嗯,好的。我在我的设备(iPhone Xs、iOS 12.x)上测试了那个 expo 示例,它在没有requestAuthorization() 的情况下按预期工作。
    • 世博会?谁说过世博会?
    • 我指的是世博会“小吃”,而不是图书馆 :)
    • 我正在运行 React Native 0.57.5 被弹出。 Expo 的 SDK 有自己的小魔法——它不是真正的 React Native
    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2020-03-13
    相关资源
    最近更新 更多