位置权限警报使用Phonegap显示两次

时间:2016-01-18 23:14:34

标签: javascript ios iphone geolocation phonegap-build

过去两天我一直在努力解决这个问题。我看过各种各样的回答,但没有一个能解决我的问题。我正在使用Phonegap Build来发布iPhone应用程序。功能之一是获取用户的当前位置。在地图加载之前,我收到两个警报,第一个是正常警报,询问我是否要授予我当前位置。但是,第二个警报显示文件所在的目录路径,还询问我是否要将应用程序权限授予我的位置(请参见下图)我在此尝试了以下建议的解决方案Location permission alert on iPhone with PhoneGap,但没有任何运气。

这就是我在config.xml文件中的内容

<gap:plugin name="org.apache.cordova.geolocation" source="npm"/>

<allow-intent href="geo:*" />

<feature name="Geolocation">
    <param name="ios-package" value="CDVLocation" />
</feature>

<platform name="ios">
    <allow-intent href="itms:*" />
    <allow-intent href="itms-apps:*" />
</platform>

<gap:config-file platform="ios" parent="NSLocationAlwaysUsageDescription" overwrite="false">
   <array>
      <string>needs your location</string>
   </array>
</gap:config-file>

我从body标签

调用init函数
     function init(){
        document.addEventListener("deviceready",onDeviceReady,false);
     }
     function onDeviceReady(){
        navigator.geolocation.getCurrentPosition(success, fail);    
     }

enter image description here 我也试过这些解决方案但没有工作

How to prevent double prompt for geolocation in Phonegap app?

Location permission alert on iPhone with Cordova

我可能做错了什么?是否有任何人可以推荐的示例或教程?

2 个答案:

答案 0 :(得分:1)

将地理位置代码放入platform.ready()

this.platform.ready().then(() => {
  this.geolocation.getCurrentPosition().then((resp) => {
      console.log(resp.coords.latitude);
      console.log(resp.coords.longitude);

})

答案 1 :(得分:0)

我终于想通了,我添加了以下几行,第二个警告不再显示

<script src="index.js"></script>
<script src="cordova.js"></script>