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

时间:2016-04-21 17:37:51

标签: android ios geolocation react-native native

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

4 个答案:

答案 0 :(得分:5)

使用“反应本机android位置服务对话框”模块for 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"
});

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

执行watchPosition或getCurrentPosition,第二个参数是失败时的回调,其参数是失败的原因。

所以,从那里你知道它失败的时间和原因。如果您只想在“禁用位置”的情况下采取行动,那么您将需要一个if&#39;而不是'请求超时&#39;例如。

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

答案 3 :(得分:0)

你也可以尝试这两个库:

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

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

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

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

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

您可以在MDN上引用此位置错误doc

enter image description here