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
应该是 String
而 Value
应该是您要向用户弹出的消息,解释您为什么需要访问位置数据。
我遇到了同样的问题。我将 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 脚本,包括地理定位插件,应用程序开始请求使用地理定位的许可。
我对 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
应该是 String
而 Value
应该是您要向用户弹出的消息,解释您为什么需要访问位置数据。
我遇到了同样的问题。我将 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 脚本,包括地理定位插件,应用程序开始请求使用地理定位的许可。