2017-08-10 67 views
0

我在React/Redux上编写我的Web应用程序。我需要借助Geolocation API获取用户位置信息。在桌面浏览器上一切正常,但在手机上(在小米红米Note 3和iPhone 5s上签出),它会抛出错误代码1 - 权限被拒绝。它不要求任何权限来获取位置。 地理位置API在手机上不起作用

下面是我在我的网站跑了测试样品:

componentDidMount() { 
    if (window.navigator.geolocation) { 
     window.navigator.geolocation.getCurrentPosition(position => { 
      alert(position.coords.latitude + ' ' + position.coords.longitude); 
     }, err => { 
      alert('ERROR: ' + err.code); 
     }); 
    } else { 
     alert('Geolocation API is not supported!'); 
    } 
} 

这是什么问题的解决?

+0

你检查操作系统和/或浏览器设置,以确保在OS级别或应用程序级别上允许地理定位? –

+0

@PatrickEvans是的。 [这里](https://html5demos.com/geo/)它会抛出权限请求(警告窗口接受/拒绝),但在我的网站上它不起作用。 –

+0

请确保你没有意外阻止你自己的网站,一旦你阻止请求不会回来,直到该设置被清除 –

回答

1

得到了同样的问题...解决:

检查您的手机分享您的位置的权限。

在iPhone: 设置 - >位置服务 - > [您的浏览器]

https://support.apple.com/en-ca/HT203033

补充:

Chrome需要HTTPS进行地理定位用法: https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only

+0

它是不仅是iOS的问题......并且所有设置都是正确的。 –

+0

好的。另一个想法: 对于一些浏览器https需要当你想使用地理定位。 https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only – chrisheyn

+0

看看我的问题下的评论。 CloudFront默认使用HTTPS。 –

0

我已经得到了解决方案。我正在使用Web应用程序清单,并且需要设置使用Geolocation API的权限。

我们只需要设置一个“required_features”选项在manifest.webapp文件:

{ 
    "required_features": ["geolocation"] 
} 

希望这将是为别人有用;)