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

Posted

技术标签:

【中文标题】React Native:如何检查是不是已授予地理定位权限【英文标题】: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。

【问题讨论】:

【参考方案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(),这将崩溃。见这里:***.com/questions/53605192/… @etayluz 嗯,好的。我在我的设备(iPhone Xs、iOS 12.x)上测试了那个 expo 示例,它在没有requestAuthorization() 的情况下按预期工作。 世博会?谁说过世博会? 我指的是世博会“小吃”,而不是图书馆 :) 我正在运行 React Native 0.57.5 被弹出。 Expo 的 SDK 有自己的小魔法——它不是真正的 React Native

以上是关于React Native:如何检查是不是已授予地理定位权限的主要内容,如果未能解决你的问题,请参考以下文章

React Native:如何检查用户是否已授予gps权限

如何让用户选中一个框以授予权限,而不是用户在 React-Native 中的警报上单击确定?

权限Android 未显示在 React Native 应用程序中

React Native - Expo - 如何检查是不是启用了暗模式?

ReactNative:如何检查用户是不是已授予 gps 权限

如何检查用户是不是已授予我的 PHP 应用程序的特定权限集?