javascript - 带有 Cordova 的 iPhone 上的位置权限警报

标签 javascript ios iphone cordova-4

我正在开发一个 cordova 应用程序,我必须在该应用程序上定位用户 纬度和经度。 使用地理定位插件,它在 Android 设备上运行良好,但在 iOS 中显示请求用户许可的警报。当我使用模拟器时,我收到这条警告消息:

Users/user/Library/Developer/CoreSimulator/Devices/783A2EFD-2976-448C-8E4E-841C985D337D/data/Containers/Bundle/Application/EFC846BB-4BA3-465C-BD44-575582E649FC/app_name.app/www/index.html would like to use your current location.

我看到过讨论这个问题的话题,例如:thisthis但是所提供的解决方案都不适合我。

这是 Cordova 示例页面:

<!DOCTYPE html>
 <html>
<head>
<title>Device Properties Example</title>

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
function onSuccess(position) {
    var element = document.getElementById('geolocation');
    element.innerHTML = 'Latitude: '           + position.coords.latitude              + '<br />' +
                        'Longitude: '          + position.coords.longitude             + '<br />' +
                        'Altitude: '           + position.coords.altitude              + '<br />' +
                        'Accuracy: '           + position.coords.accuracy              + '<br />' +
                        'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' +
                        'Heading: '            + position.coords.heading               + '<br />' +
                        'Speed: '              + position.coords.speed                 + '<br />' +
                        'Timestamp: '          + position.timestamp                    + '<br />';
}

function onError(error) {
    alert('code: '    + error.code    + '\n' +
          'message: ' + error.message + '\n');
}

</script>
</head>
<body>
<p id="geolocation">Finding geolocation...</p>
</body>

是否有任何方法可以更改警报文本或禁用此警报?

-编辑---

我找到了问题的根源。我删除了地理定位插件并添加了几次,因为当我添加该插件时,我没有像其他插件那样找到一个名为 geolocation plugin 的文件夹。甚至 cordova_plugin.js 文件也不包含任何有关地理定位插件的数据。现在我再次安装了该插件,它可以正常工作。

最佳答案

与原始问题中的“编辑”相同,我不得不删除旧版本的地理定位插件并添加新版本。然后我不得不删除/添加 Cordova iOS 平台。只有这样我才能将 NSLocationWhenInUseUsageDescription 添加到 .plist 文件中作为 DaveAlden在他的回答中提到成功。

首先,删除/添加地理定位插件:

cordova plugin rm org.apache.cordova.geolocation
cordova plugin add org.apache.cordova.geolocation

其次,删除/添加iOS平台:

cordova platform rm ios
cordova platform add ios

最后,将 NSLocationWhenInUseUsageDescription 添加到 .plist。打开 /platforms/ios/{project}/{project}-Info.plist 并添加以下内容:

<key>NSLocationWhenInUseUsageDescription</key>
<string>[App Name] would like to access your location when running and displayed.</string>

查看此 iOS Developer Library link有关 NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescriptionNSLocationUsageDescription 的详细信息。

关于javascript - 带有 Cordova 的 iPhone 上的位置权限警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29302242/

相关文章:

ios - 键盘下的文本字段

iphone - UIlabel 在滚动 UiTableView 时缩小

javascript - 需要一个正则表达式来获取从 # 到非字母表的所有字母

javascript - Async Await 未按预期等待

javascript - 来自第 3 方 API 的回调未在 MeteorJS 中获取当前用户

iOS - 清除 WebView 中的返回缓存

iphone - Xcode iOS : Streaming of video file while recording

javascript - 当我自己引起 Angular $watch 事件时,如何忽略它?

ios - DatePicker 出现在多个文本字段中

ios - 将 Quartz 方法从 iOS 转换为 OSX