Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Cordova的iPhone上的位置权限警报_Javascript_Ios_Iphone_Cordova 4 - Fatal编程技术网

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不使用时的位置说明
[应用程序名称]希望在运行和显示时访问您的位置。
有关使用说明
时的位置与使用说明时的位置的详细信息,请参见本节
  • 确保根文件夹中存在“cordova.js”文件,只需将此js文件包含在访问此位置的.html文件中,即可解决此问题。无需任何特殊要求。如果缺少此js文件,navigator.geolocation将调用基于浏览器的HTML5对象,从而发出奇怪的警报

  • 不要在启动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>