2013-02-07 34 views
2

我正在开发IOS手机应用程序,我想在加载时获得位置服务的用户权限。问题是,直到我恢复应用程序(按回家并再次打开应用程序)或等待几分钟后才会显示警报询问权限,这是不可接受的。Phonegap IOS地理位置权限警报没有显示

我使用deviceready事件,像这样:

document.addEventListener("deviceready", deviceReady, false); 
function deviceReady() { 
navigator.geolocation.getCurrentPosition(onLocationSuccess, 
             onLocationError 
             ); 
} 

如果我不等待deviceready警报似乎不错,但我得到双重像这样一个信息提示:

/var/mobile/Applications/XXXX-XXXX-XXXX-XXXXXXXXXXX/AppName.app/www/index.html would like to use your current location

任何想法得到它的效果?

+0

你看过文档中给出的完整示例:http://docs.phonegap.com/en/2.3。0/cordova_geolocation_geolocation.md.html#地理定位他们应该给你一个如何让它工作的想法,确保你在'config.xml'中有''' – methodMan

+0

@methodMan是的,地理位置工作正常,但许可警报“我的应用程序想使用您当前的位置”是什么似乎越野车,它只出现,直到我退出应用程序按主页按钮。我正在使用iOS 5.0.1顺带测试我的iPhone 4。 –

+0

我刚刚更新到科尔多瓦2.3.0(我在2.2),问题似乎得到解决。一切都如预期般运作。谢谢。 –

回答

0

虽然你已经解决了这个问题,但以后会帮助其他人。

为了在iOS上显示权限对话框,您必须在config.xml中配置以下内容。

<gap:config-file platform="ios" parent="NSLocationAlwaysUsageDescription" overwrite="false"> 
    <array> 
     <string>NSLocationAlwaysUsageDescription</string> 
    </array> 
</gap:config-file> 

我使用这个,它运作良好。

+0

问题是,他可以看到对话框,但只有在关闭应用程序后。你的答案与这个问题无关。 – CodeGems

1

我在这个问题上奋战了几天,终于找到了解决方案。似乎它不是插件或科维达版本的责任。尝试添加该内容安全,政策进入你的的index.html头段内:

<meta http-equiv="Content-Security-Policy" content="default-src * gap://ready file:; style-src 'self' 'unsafe-inline'; img-src 'self' 

数据:;脚本SRC *'不安全内联 '不安全-EVAL'“>

重要组成部分,是

默认-SRC *差距://准备文件:;

差距:只需要在iOS(使用一个UIWebView时),并需要JS->本地通信

我希望它能帮助

0

这种溶胶。 ution是非常适合我:

<gap:config-file platform="ios" parent="NSLocationAlwaysUsageDescription" overwrite="false"> 
    <array> 
     <string>NSLocationAlwaysUsageDescription</string> 
    </array> 
</gap:config-file> 
+0

一般而言,如果答案包含对代码意图做什么的解释,以及为什么解决问题而不介绍其他问题,则答案会更有帮助。 –

+0

当然,这段代码放在了config.xml中,因为您需要在Android应用程序的IOS应用程序中使用cordoba-plugin-geolocation进行特定配置,因为它适用于此作品,请告诉我能否帮助您更多。 –

0

的iOS使用此代码权限对话框中您config.xml中

<gap:config-file platform="ios" parent="NSLocationAlwaysUsageDescription" overwrite="false"> 
<array> 
    <string>NSLocationAlwaysUsageDescription</string> 
</array> 

@AAhad有关问题的用户,当关闭对话框或提醒,您可以检查该选项是否可用,如果您需要激活GPS,则可以与您的请求一起以新警报与用户通话。

document.addEventListener("deviceready", onDeviceReady, false); 


function onDeviceReady() { 
    navigator.geolocation.getCurrentPosition(onSuccess, onError); 
} 

// onSuccess Geolocation 
// 
function onSuccess(position) { 
    //Code for your GPS 
} 

// onError Callback receives a PositionError object or if your user close de dialog or cancel de permission 
// 
function onError(error) { 
     alert('Error please check your GPS on Settings: ' + error.code + '\n' + 
       'Please Active Your GPS' + error.message + '\n'); 
    }