Javascript 使用Cordova的iPhone上的位置权限警报
我正在开发一个Javascript 使用Cordova的iPhone上的位置权限警报,javascript,ios,iphone,cordova-4,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-BD
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.
我曾经看到过这样的话题:但所提供的解决方案都不适合我
这是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>
设备属性示例
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
函数ondevicerady(){
navigator.geolocation.getCurrentPosition(onSuccess,onError);
}
成功时的功能(位置){
var element=document.getElementById('geolocation');
element.innerHTML='Latitude:'+position.coords.Latitude+'
'+
'经度:'+position.coords.Longitude+'
'+
'高度:'+position.coords.altime+'
'+
'精度:'+position.coords.accurity+'
'+
'高度精度:'+position.coords.altitudeAccuracy+'
'+
'标题:'+position.coords.Heading+'
'+
'速度:'+position.coords.Speed+'
'+
'时间戳:'+position.Timestamp+'
';
}
函数onError(错误){
警报('code:'+error.code+'\n'+
'消息:'+error.message+'\n');
}
查找地理位置
有没有办法更改警报文本或禁用此警报
-编辑---
我已经找到了问题的根源。我删除了geolocation插件并多次添加它,因为当我添加该插件时,我没有找到一个与其他插件一样名为
geolocation插件的文件夹。即使是cordova_plugin.js
文件也不包含任何关于地理位置插件的数据。现在我再次安装了插件,它可以正常工作。您不能在模拟器或设备上禁用请求消息,但您可以通过向项目的.plist添加属性来自定义它
对于iOS 8,如果您的应用程序请求在后台使用location的权限,则需要以下键(将字符串值设置为任意值):
NSLocationAlwaysUsageDescription
我的应用程序需要不断访问您的位置,即使屏幕关闭。
如果您的应用程序仅在前台使用location,请添加以下键:
<key>NSLocationWhenInUseUsageDescription</key>
<string>My app requires access to your location when the screen is on and the app is displayed.</string>
n不使用时的位置说明
我的应用程序需要在屏幕打开且应用程序显示时访问您的位置。
对于旧版本的iOS(与原始问题中的“编辑”相同,我必须删除旧版本的地理位置插件并添加新版本。然后我必须删除/添加Cordova iOS平台。只有这样,我才能将nslocationwhenUsageDescription
添加到.plist文件中,正如他在回答中提到的那样,并获得成功
首先,删除/添加地理位置插件:
cordova plugin rm org.apache.cordova.geolocation
cordova plugin add org.apache.cordova.geolocation
第二,删除/添加iOS平台:
cordova platform rm ios
cordova platform add ios
最后,将nslocationwhenUsageDescription
添加到.plist.Open/platforms/ios/{project}/{project}-Info.plist
并添加以下内容:
<key>NSLocationWhenInUseUsageDescription</key>
<string>[App Name] would like to access your location when running and displayed.</string>
n不使用时的位置说明
[应用程序名称]希望在运行和显示时访问您的位置。
有关使用说明
时的位置与使用说明时的位置的详细信息,请参见本节
不要在启动deviceready后立即调用getCurrentPosition。您是否给setTimeout一个延迟后尝试调用getCurrentPosition的机会?是,即使使用setTimeout(函数(){navigator.geolocation.getCurrentPosition(onSuccess,onError);},60000);将显示难看的HTML消息。@Dev DOS如何删除此消息error@nivritgupa我不记得具体是怎么回事,但我记得这是一个与地理位置插件相关的问题,因此:删除/添加地理位置插件:
cordova plugin rm org.apache.cordova.geolocation cordova plugin add org.apache.cordova.geolocation
add NSLocatIonWhenInUsageDescription到.plist.Open/platforms/ios/{project}/{project}/{Info.plist并添加以下内容:nsLocationWhenInUsageDescription[应用程序名称]希望在运行和显示时访问您的位置。
您是指config.xml文件吗?因为我在项目中找不到.plist文件如果您在本地构建cordova应用程序,您的位置将是/{project}/platforms/ios/{project}/{project}-Info.plist
我发现我的应用程序使用NSLocationWhenUsageDescription没有字符串值当我用自定义文本更改它时,它会在我第一次运行应用程序时更改第一条消息,但第二条难看的消息仍在显示。我如何更改它?您好,如何使用Cordova在iPhone上禁用位置权限警报。我认为不可能禁用此警报。据我所知,它作为一项基本安全功能硬连接到操作系统中,仅允许将此类私人信息(设备位置)传输到具有明确用户许可的第三方应用程序。
<key>NSLocationWhenInUseUsageDescription</key>
<string>[App Name] would like to access your location when running and displayed.</string>