Ios 电话询问两次

Ios 电话询问两次,ios,iphone,cordova,gps,phonegap-plugins,Ios,Iphone,Cordova,Gps,Phonegap Plugins,我意识到这个问题已经被问了100次,我觉得我已经阅读了每个问题和答案,但我还没有找到解决问题的方法 我已经正确安装和配置了PhoneGap插件 我已经确认所有文件都位于plugins>org.apache.cordova.geolocation文件夹中 下面是对my config.xml中的地理位置功能的调用 <feature name="Geolocation"> <param name="android-package" value="org.apache.cord

我意识到这个问题已经被问了100次,我觉得我已经阅读了每个问题和答案,但我还没有找到解决问题的方法

我已经正确安装和配置了PhoneGap插件

我已经确认所有文件都位于plugins>org.apache.cordova.geolocation文件夹中

下面是对my config.xml中的地理位置功能的调用

<feature name="Geolocation">
    <param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
    <param name="ios-package" value="CDVLocation" />
</feature>
确保设备在调用地理定位之前准备就绪

第一个请求使用我的应用程序名称。第二个调用显示一个长而丑陋的url。在第一次请求后,app name请求消失(到目前为止还很完美),但丑陋的url仍然要求获得访问权限

设备准备就绪后,我将位置调用绑定到一个tap事件,如下所示:

  geocoder = new google.maps.Geocoder();

  $("#my-location").bind( "tap", function(e){
      //unrelated code omitted
      //I know these times are big, but this is just testing at this point
      var options = { maximumAge: 3600000, timeout: 60000, enableHighAccuracy: true };

      if(map != null){
            circle.setMap(null);
            personalCircle.setMap(null);
            google.maps.event.clearInstanceListeners(map);
            deleteMarkers();
            map = null;
      }

      navigator.geolocation.getCurrentPosition(onSuccess, onError, options);
});
提前谢谢你的建议。如果您想查看其他代码,请告诉我

编辑 根据@cagdas建议,我在config.xml中添加了以下行。仍然遇到同样的问题

<gap:plugin name="org.apache.cordova.geolocation" />
<feature name="http://api.phonegap.com/1.0/geolocation"/>

更新


最近版本的PhoneGap似乎已经解决了这个问题。现在,当我编译应用程序时,我不再有这个问题。我不必更改代码中的任何内容。

您需要在config.xml中包含以下行:

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

如果没有包含,HTML Geolocation会尝试查找您的位置,如您所述,一些URL(可能包括您的MAC或其他设备标识符)需要批准

包括上一行之后,对于Android和Windows设备,请插入下一行以适应正确的任务:

<feature name="http://api.phonegap.com/1.0/geolocation"/>

请使用正确的phonegap版本检查这些文档:


虽然我不完全清楚您在经历“第一次请求”和“第二次呼叫”时的感受,但我会提供这个,fwiw

初始应用程序安装和执行将显示提示,允许应用程序使用您的位置(根据需要地理位置的CDV配置)。这是包含应用程序名称的提示。这是一次性的,用户的回答方式决定是否授予了权限,您应该在进行后续定位调用之前验证权限

虽然建议在调用任何地理定位方法之前验证是否已授予位置权限,但如果未授予权限,则应该失败

“长而丑陋的url”与显式地理位置调用相关

如果您只是在模拟器中看到这一点,那么请确保您的IOS模拟器->调试->位置未设置为无

如果您在不点击控件的情况下一个接一个地获取这两个事件,那么必须在事件处理程序之外发生地理位置调用,或者事件处理程序是通过编程方式触发的

如果您在点击控件后一个接一个地获得这两个选项,那么您的项目设置可能有问题,正如初始安装中的第一个提示所显示的那样

请注意,您不需要从模拟器中删除应用程序,以便进行“初始应用程序安装”(或重置模拟器)


如果这些都没有帮助,请提供iOS和phonegap/cordova版本。

您必须在index.html中包含cordova.js脚本

生成时,会生成此文件并将其添加到
平台//www
。我数天来一直在为这个问题绞尽脑汁,但从来没有看到任何明确的说法,即删除此文件会导致第二次权限请求。我查看了官方文档中的地理位置示例,果然,这一行也在他们的
index.html
文件中


我知道这是一个老问题,但我希望它能对将来的人有所帮助。

Hi@James,你是否使用了其他框架,如Sencha?@JamesWong我没有使用PhoneGap框架以外的任何框架。问题似乎是你的
bind('tap')
由于任何原因被触发两次,因此用户被询问了两次。试着用('click')上的
替换它。
看看效果如何。我试过('click')和其他一些变体,但运气不好。谢谢你,谢谢你的建议。我在config.xml中添加了这些行,但仍然看到相同的问题。也很抱歉花了这么长时间才回复。开始了一个不同的项目。谢谢你的信息。我已经离开了这个项目,已经有一段时间没做了,但我相信你是对的,有一些明确的呼吁触发了这一点,但就我的一生而言,我不知道这是从哪里来的。如果我不清楚(我很少清楚),那么实际的问题是,在第一次使用该应用程序时,这两种情况都会出现。在随后的使用中,只会出现丑陋的url,因为该应用程序已被授予GPS权限。我只打了一个GPS电话,这是在用户请求按位置搜索后才发生的。而且,这发生在sim卡和手机上。
<feature name="http://api.phonegap.com/1.0/geolocation"/>