检查是否使用react native启用了位置服务

我目前正在开发一个使用react native的应用程序,该应用程序需要使用位置服务来实现其某些function。 我一直在研究是否有一种简单的方法来测试用户是否打开了它们,所以如果不是,我可以显示不同的视图。 除了IOS或Android特有的结果之外,我没有找到任何结果。 有没有其他人找到解决方案?

使用android的“反应本机android位置服务对话框”模块

https://www.npmjs.com/package/react-native-android-location-services-dialog-box

安装

npm install react-native-android-location-services-dialog-box --save 

JS

 import LocationServicesDialogBox from "react-native-android-location-services-dialog-box"; LocationServicesDialogBox.checkLocationServicesIsEnabled({ message: "Use Location ?", ok: "YES", cancel: "NO" }).then(function(success) { console.log(success); // success => "enabled" ).catch((error) => { console.log(error.message); // error.message => "disabled" }); 

我能够通过在无法检索位置时显示错误消息来解决此问题。

 (error) => { this.setState({servicesOn: false}), console.log(error); }, 

做一个watchPosition或getCurrentPosition,你的第二个参数是一个失败的回调函数,它的参数是失败的原因。

所以,从那里你知道它失败的时间和原因。 如果您只想对“禁用位置”进行操作而不是“请求超时”,则需要if if。

例如,您可以使用回调向您的州添加标记。

您还可以试用这两个库:

https://github.com/c19354837/react-native-system-setting

https://github.com/efkan/react-native-system-settings

我有以下内容:我收到此错误代码1或错误消息:’ 没有可用的位置提供程序 。 我的手机位置服务关闭时。

其他时间,当它超时时,我收到此错误代码3或错误消息:“ 位置请求超时 。”。

因此,基于错误代码和消息,我显示不同的toast以通知用户。

您可以在MDN上参考此位置错误文档

在此处输入图像描述