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 中的警报上单击确定?
权限Android 未显示在 React Native 应用程序中
React Native - Expo - 如何检查是不是启用了暗模式?