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

Ionic Geolocation Permission issue on iOS

我对 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:"Origin does not have permission to use Geolocation service"。

我该怎么办?

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

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

我遇到了同样的问题。我将 Ionic v4 与 React、Cordova v9、cordova-ios v4.5.5 一起使用。我遇到的问题是因为我没有将 Cordova JS 脚本注入到 webview 中。为了修复它,我在准备挂钩 ((cordova root)/hooks/before_prepare/inject_cordova.js) 之前向 Cordova 添加了以下 Bash 脚本:

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

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

当您 运行 cordova prepare ios 时,最后一行将 <script src="cordova.js"></script> 标记添加到 HTML 文件的末尾。结果,webview 开始加载 Cordova 脚本,包括地理定位插件,应用程序开始请求使用地理定位的许可。