我在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:“来源无权使用地理位置服务”。
我该怎么办?
答案 0 :(得分:2)
我遇到了这个确切的问题-我不得不在XCode本身的* .plist文件中手动添加此隐私设置(位于resources /中)。
在Key
下键入Privacy - Location When In Use Usage Description
,或至少开始键入它,它将自动完成。 Type
应该是String
,Value
应该是您要向用户弹出的消息,解释为什么您需要访问位置数据。
答案 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脚本,并且应用程序开始询问使用地理位置的权限。