iOS上的离子地理定位权限问题

时间:2018-08-08 11:41:02

标签: ios ionic-framework geolocation ionic3

我在ionic3上的GeoLocation Plugin有问题。

我添加了所有导入内容。 <edit-config>部分也是如此。我可以在我的plist文件中看到它:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Get Position</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Get position</string>

所以我认为它可行。但事实并非如此;它适用于Android,但不适用于iOS。 我称这种方法:

this.geolocation.getCurrentPosition().then((resp) => {
    alert("geo " + resp.coords.latitude);
    // resp.coords.latitude
    // resp.coords.longitude
   }).catch((error) => {
     alert(error.code);
     alert(error.message);
   });

我收到了Error.code 2和Error.message:“来源无权使用地理位置服务”。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

我遇到了这个确切的问题-我不得不在XCode本身的* .plist文件中手动添加此隐私设置(位于resources /中)。

Key下键入Privacy - Location When In Use Usage Description,或至少开始键入它,它将自动完成。 Type应该是StringValue应该是您要向用户弹出的消息,解释为什么您需要访问位置数据。

答案 1 :(得分:0)

我有同样的问题。我将Ionic v4与React,Cordova v9,cordova-ios v4.5.5一起使用。我发生的问题是因为我没有将Cordova JS脚本注入到Web视图中。要解决此问题,我在准备钩子((cordova root)/hooks/before_prepare/inject_cordova.js)之前将以下Bash脚本添加到了Cordova的脚本中:

#!/bin/bash
set -e
sed -E -i "" -e "s_(<head[^>]*>)_\1<script src=\"cordova.js\"></script>_" www/index.html

www/index.html是应用程序主HTML文件相对于cordova项目根目录的路径。

运行<script src="cordova.js"></script>时,最后一行在HTML文件的末尾添加一个cordova prepare ios标记。结果,Web视图开始加载包括地理位置插件的Cordova脚本,并且应用程序开始询问使用地理位置的权限。