2016-11-25 88 views
3

我使用插件cordova-plugin-geolocation。我唯一的问题是,信息提示,让位置看起来是这样的:科尔多瓦iOS位置消息

/var/container/bundle/application/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/my_project/www/index.html 想使用您的位置。

反正有什么东西一点点性感,像

MY_PROJECT想使用您的位置

干杯。

添加一些代码,对于非信徒

document.addEventListener("deviceready", onDeviceReady, false); 

function onDeviceReady(){ 

    navigator.geolocation.getCurrentPosition(onLocationSuccess, onLocationError, {maximumAge:3000, timeout:2000, enableHighAccuracy:true}); 

    function onLocationSuccess(){ 

    } 

    function onLocationError(){ 

    } 
} 
+0

的地理定位插件应自动照顾这对你。确保在你的第一个GPS请求之前等待'deviceready' - 否则你将得到浏览器的实现,而不是插件的实现。 –

+0

我想为ondevice准备好已经 – Eric

+0

有助于看到一些代码。 –

回答

8

docs

的iOS怪癖

自iOS 10开始,必须在info.plist中添加一个NSLocationWhenInUseUsageDescription条目。

NSLocationWhenInUseUsageDescription描述应用程序 访问用户位置的原因。当系统提示用户允许访问时,该字符串将显示为对话框的一部分。至 添加此条目,您可以在插件安装时传递变量GEOLOCATION_USAGE_DESCRIPTION 。

例:科尔多瓦插件添加科尔多瓦,插件,地理位置--variable GEOLOCATION_USAGE_DESCRIPTION =“您的使用情况信息”

如果不传递变量,插件会添加一个空字符串作为 值。

解决您的问题,请尝试:

卸载插件:

cordova plugin remove cordova-plugin-geolocation 

重新安装使用:

cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="my_project would like to use your location" 
+0

@Eric这就是你的答案。我使用了插件,并没有设置与您自己产生相同问题的info.plist。如果您不知道如何将详细信息添加到info.plist中,请添加另一个问题或搜索它。但这是完美的,并回答你的赏金。 –

+0

GEOLOCATION_USAGE_DESCRIPTION适用于“隐私 - 位置使用说明”,“隐私 - 位置始终使用说明”和“隐私 - 使用说明中的位置”的变量名称是什么? – h3nr1ke

+0

谢谢布鲁诺! :) –

1

如果您靶向的iOS 8或更高版本(我我看来,没有必要针对旧版本了...),还有两个按键可供配置:

NSLocationAlwaysUsageDescription

此键可以让你描述你的应用程序访问在任何时候用户的位置信息的原因。当您的应用在前台或后台运行时以潜在的非显而易见的方式使用位置服务时,请包含此密钥。例如,当社交应用使用位置信息来跟踪用户的位置并显示附近的其他用户时,社交应用可能包含此密钥。在这种情况下,应用程序正在跟踪用户位置的事实可能并不明显。当请求使用位置服务的许可时,系统在显示给用户的警报面板中包含此密钥的值。

NSLocationWhenInUseUsageDescription

此键可以让你描述,而您的应用程序在前台运行否则在使用时您的应用程序访问用户的位置信息的原因。当您的应用使用位置服务直接跟踪用户的当前位置时,请添加此密钥。此密钥不支持使用位置服务监控区域或使用重要的位置更改服务监控用户的位置。当请求使用位置服务的许可时,系统在显示给用户的警报面板中包含此密钥的值。

在iOS

所以项目info.plist文件,你可以添加以下内容:只有当应用程序使用

<key>NSLocationWhenInUseUsageDescription</key> 
<string>my_project requires access to your location only when being used.</string> 
+0

我在platform/iOS中添加了exportOptions.plist中的键和字符串(只能找到plist文件),它没有改变任何东西... – Eric

1

有用于显示的路径3倍可能的原因

<key>NSLocationAlwaysUsageDescription</key> 
<string>my_project requires constant access to your location, even when the screen is off.</string> 

访问位置index.html代替您的应用名称:

  1. 你是不是在等待装置就绪事件来调用插件
  2. 您没有链接的cordova.js文件索引您还没有安装该插件(或者它安装不正确)。html

正如你所说,你已经安装了插件,并且你正在使用它在设备准备好的事件上,那么它肯定是你忘记链接在index.html中的cordova.js或插件wasn'正确安装。 检查是否有cordova.js链接,如果你拥有它,删除插件,然后重新添加,删除和重新加入iOS平台也会有所帮助

2

这似乎是版本3.0.0cordova-plugin-geolocation忽略安装页面rameter

--variable GEOLOCATION_USAGE_DESCRIPTION=""

像布鲁诺佩雷斯上面说的。

它适用于我安装2.4.3版本。

2

该解决方案已更改为cordova-plugin-geolocation:“4.0.0”。这就是你需要在你的​​3210补充:

<edit-config target="NSLocationWhenInUseUsageDescription" file="*-Info.plist" mode="merge"> 
    <string>need location access to find things nearby</string> 
</edit-config> 

欲了解更多信息:https://github.com/apache/cordova-plugin-geolocation

+0

这正是我所需要的。 – MikeC

+0

我很高兴它帮助@MikeC – Stan

+0

这应该是被接受的答案。 –