在IOS上PhoneGap Build 6.3.0 geolocation getCurrentPosition很慢

时间:2017-01-19 14:04:26

标签: ios cordova geolocation ios10

我是开发PhoneGap Build的新手。在测试一些基本的应用程序功能时,我在Iphone 6 / IOS 10 / PhoneGap Build 6.3.0上执行简单的地理定位请求时遇到超时问题。

重新安装应用程序后,我启动它并通过onclick启动地理位置 - >地理位置()。

只有当我将应用程序转到后台时,才会收到允许位置请求的IOS请求(应该在我第一次执行onclick时显示 - >地理定位,同时将应用程序放在前台)。

有时我会在很长一段时间后得到地理定位结果,有时候不会。我已经在三个PositionOptions上尝试了所有可能的组合。

当我询问Google地图应用时,会立即向我显示该位置。

知道我做错了吗?

谢谢Kim,

function do_geolocation(){
	alert('do geoloc');
	navigator.geolocation.getCurrentPosition(geo_onSuccess, geo_onError, {maximumAge:120000, enableHighAccuracy:false} );

}
onclick=do_geolocation();



function geo_onSuccess(position){

	alert('Latitude: '          + position.coords.latitude          + '\n' +
          'Longitude: '         + position.coords.longitude         + '\n' +
          'Altitude: '          + position.coords.altitude          + '\n' +
          'Accuracy: '          + position.coords.accuracy          + '\n' +
          'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
          'Heading: '           + position.coords.heading           + '\n' +
          'Speed: '             + position.coords.speed             + '\n' +
          'Timestamp: '         + position.timestamp                + '\n');

	var arr = new Array();
	arr['lat'] = position.coords.latitude;
	arr['lng'] = position.coords.longitude;

	var x = new Date();var cb = x.getTime();
	

}
function geo_onError(position){
	
	 alert('code: '+error.code+'\nmessage: '+error.message+'\n');
	return false;

}

<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns   = "http://www.w3.org/ns/widgets"
    xmlns:gap   = "http://phonegap.com/ns/1.0"
    id          = "de.vvvvvv.secapp"
    versionCode = "10"
    version     = "1.0.0" >

<!-- versionCode is optional and Android only -->

  <name>vvvvvvv</name>

  <description>
      vvvvvvvvvvvv
  </description>

  <author href="http://vvvvvvv.de" email="info@vvvvvv.de">
      Kim
  </author>

<plugin name="cordova-plugin-geolocation" spec="2.4.1" />

<plugin name="cordova-plugin-whitelist" spec="1.3.1" />
<access origin="*"/>
<allow-intent href="http://*/*"/>
<allow-intent href="https://*/*"/>


<preference name="orientation" value="portrait" />

<!-- https://makeappicon.com/ios10icon -->
<icon src="res/icons/ios/Icon-App-20x20@2x.png" platform="ios" width="20" height="20" />
<icon src="res/icons/ios/Icon-App-20x20@3x.png" platform="ios" width="40" height="40" />
...

1 个答案:

答案 0 :(得分:2)

  

只有当我将应用程序转到后台时,才会收到允许位置请求的IOS请求(应该在我第一次执行onclick时显示 - &gt;地理定位,同时将应用程序放在前台)。

仅在对应用程序进行背景调整时才会激活Content-Security-Policy问题(here's another example)。

要解决此问题,请确保您的Content-Security-Policy元标记包含gap://ready的{​​{1}}和file:条目。例如:

default-src
  

有时我会在很长一段时间后得到地理定位结果,有时候不会。我已经在三个PositionOptions上尝试了所有可能的组合。

<meta http-equiv="Content-Security-Policy" content="default-src * gap://ready file:; style-src 'self' 'unsafe-inline'; img-src 'self' data:; script-src * 'unsafe-inline' 'unsafe-eval'"> 设置为maximumAge表示可以使用最长2分钟(由操作系统缓存)的位置。要强制新位置,请将其设置为零:

120000

如果将{ enableHighAccuracy: false maximumAge: 0, timeout: 2000 } 设置为true,这会使GPS硬件锁定,因此设置足够的超时以允许其锁定足够的卫星:

enableHighAccuracy

有关PositionOptions的完整说明,请参阅Mozilla docs