iOS超时时Cordova/Phonegap生成地理位置

iOS超时时Cordova/Phonegap生成地理位置,ios,cordova,geolocation,phonegap-build,cordova-plugins,Ios,Cordova,Geolocation,Phonegap Build,Cordova Plugins,我也遇到过同样的问题,在过去的两周里,我尝试了许多在线解决方案,但都没有成功,非常感谢您的帮助:) 我正在使用Cordova for IOS和Android编写一个简单的应用程序,并使用Phonegap build进行构建。问题是我无法让“navigator.geolocation.getCurrentPosition”(或navigator.geolocation.watchPosition)调用返回iOS上的超时错误以外的任何内容。(在Android上工作得非常好) 此外,“位置服务”对话框

我也遇到过同样的问题,在过去的两周里,我尝试了许多在线解决方案,但都没有成功,非常感谢您的帮助:)

我正在使用Cordova for IOS和Android编写一个简单的应用程序,并使用Phonegap build进行构建。问题是我无法让“navigator.geolocation.getCurrentPosition”(或navigator.geolocation.watchPosition)调用返回iOS上的超时错误以外的任何内容。(在Android上工作得非常好)

此外,“位置服务”对话框从未出现(请求用户允许应用程序使用GPS)

为了增加这种奇怪的行为,似乎我必须在加载应用程序后触摸屏幕来启动地理定位调用,在大多数情况下,应用程序只是坐在那里,在触摸屏幕之前什么也不做

在iPhone5和iOS9上进行测试

我尝试过的事情:

  • 更改超时设置(最多30秒)
  • 设置启用高精度真/假
  • 使用或不使用地理位置插件运行代码
  • 手动将nsLocationWhenUsageDescription/NSLocationAlwaysUsageDescription设置(或两者)添加到plist文件
  • 为地理位置插件安装不同的插件版本
  • 更改内容安全策略元标记
  • 正在尝试从root config.xml添加或删除
    声明
  • 当前安装的插件($cordova插件列表):

    cordova-plugin-dialogs 1.2.0 "Notification"
    cordova-plugin-geolocation 1.0.1 "Geolocation"
    cordova-plugin-whitelist 1.2.0 "Whitelist"
    cordova.plugins.diagnostic 2.3.5 "Diagnostic"
    
    Root config.xml:

    cordova-plugin-dialogs 1.2.0 "Notification"
    cordova-plugin-geolocation 1.0.1 "Geolocation"
    cordova-plugin-whitelist 1.2.0 "Whitelist"
    cordova.plugins.diagnostic 2.3.5 "Diagnostic"
    
    
    应用程序名称
    应用程序名称
    应用程序团队
    
    index.js

    var geo={
    getGeo:函数(){
    navigator.geolocation.getCurrentPosition(
    geo.onSuccess,
    geo.onError,
    {maximumAge:0,超时:5000,enableHighAccurance:false});
    },
    onSuccess:功能(位置){
    警报(“获取位置”);
    警报(position.coords.latitude+'--'+position.coords.longitude);
    },
    onError:函数(错误){
    警报('获取地理信息时出错!');
    }   
    };
    变量应用={
    //应用程序构造函数
    初始化:函数(){
    这是bindEvents();
    },
    //绑定事件侦听器
    //
    //绑定启动时所需的任何事件。常见事件包括:
    //“加载”、“deviceready”、“脱机”和“联机”。
    bindEvents:function(){
    文件.addEventListener('devicerady',this.ondevicerady,false);
    },
    //deviceready事件处理程序
    //
    //“this”的作用域是事件。要调用“receivedEvent”
    //函数,我们必须显式调用“app.receivedEvent(…);”
    ondevicerady:function(){
    app.receivedEvent(“DeviceRady”);
    },
    //在接收到的事件上更新DOM
    receivedEvent:函数(id){
    var parentElement=document.getElementById(id);
    var listeningElement=parentElement.querySelector('.listening');
    var receivedElement=parentElement.querySelector('.received');
    setAttribute('style','display:none;');
    setAttribute('style','display:block;');
    console.log('接收到的事件:'+id);
    geo.getGeo();
    }
    };
    app.initialize();
    
    iOS Plist文件:

    cordova-plugin-dialogs 1.2.0 "Notification"
    cordova-plugin-geolocation 1.0.1 "Geolocation"
    cordova-plugin-whitelist 1.2.0 "Whitelist"
    cordova.plugins.diagnostic 2.3.5 "Diagnostic"
    
    NSLocationAlwaysUsageDescription
    此应用程序需要不断访问您的位置,以便跟踪您的位置,即使在屏幕关闭时也是如此。
    NSLocationWhenUse用途说明
    
    Index.html:

    cordova-plugin-dialogs 1.2.0 "Notification"
    cordova-plugin-geolocation 1.0.1 "Geolocation"
    cordova-plugin-whitelist 1.2.0 "Whitelist"
    cordova.plugins.diagnostic 2.3.5 "Diagnostic"
    
    
    你好,世界
    阿帕奇科尔多瓦酒店
    连接到设备

    设备已准备就绪

    任何正确方向的帮助都将不胜感激

    @daddio
    哦就这样。在这个问题上,我应该更加教条。这应该能解决问题

    不建议使用Phonegap CLI生成Phonegap生成项目。Phonegap构建要求
    index.html
    config.xml
    都位于根目录中。Phonegap CLI需要使用的所有额外文件都不会在Phonegap Build中创建或需要

    所以,我要给你一个我的工作演示。请注意,所有文件都位于一(1)个目录中

    • 教程/博客条目-
    • 源代码
    请注意如何将编译器版本设置为:

    请注意,如果将
    cli-5.2.0
    更改为
    3.7.0
    ,则不会出现任何更改

    基本上,对于Phonegap构建,您需要
    index.html
    config.xml
    ——就是这样。然后出于安全原因(从Cordova Tools 5.0.0开始),建议创建
    css
    文件和
    javascript
    文件。不过,我会告诉你如何避开这个问题

    这是我的演示应用程序的完整列表

    你的计划 这是我的工作代码,使用3.5.0、cli-5.1.1和cli5.2.0进行测试

    • 源代码
    在修复过程中,请注意版本设置为:

    好吧,我相信这一切都会对你有用。因此,您的文档如下所示:

    添加插件有一些特殊的规则,但我会在程序运行时告诉您这些规则

    如何使用Phonegap构建添加插件
  • 在最近的将来,请从以下列表中获取您的*core*插件:

  • 从以下来源获取您的第三方插件:

  • 当使用Phonegap构建时,有时pluins会得到修复(或更新),这会破坏Phonegap构建。这是因为“修复”需要最新版本的编译器和Phonegap Build i