Tim*_*imo 8 javascript iphone geolocation ios cordova
我为iPhone创建了一个PhoneGap应用程序,它通过webview中的JavaScript使用地理定位.
当我第一次运行应用程序时,它会提示我允许这个应用程序的地理位置.
当我点击"确定"时,它会再次提示我同样的问题,但这一次它说"index.html"想要使用地理位置的许可.
这是有道理的,因为iOS可能希望允许第一次允许应用程序本身的地理定位,并且第二次浏览器需要权限.
但是,由于不会带来出色的用户体验:
如何防止此双重提示?(如果可以防止第二次提示,我就够了)
Tim*_*imo 14
我找到了问题的原因.
调用navigator.geolocation.getCurrentPosition(onsuccess, onerror)在Phonegap完全加载之前发生.
这意味着正在触发webview的地理定位调用(而不是通过PhoneGap的本地调用),这将再次请求许可(这确实有意义).将其与智能手机上的普通Safari浏览器进行比较.它会要求每个新网站的地理位置许可.在应用程序启动时通过PhoneGap加载index.html时也是如此.
但是,解决方案是等待PhoneGap完全加载时触发的deviceready事件:
document.addEventListener("deviceready", function(){
navigator.geolocation.getCurrentPosition(onsuccess, onerror, params);
}, false);
Run Code Online (Sandbox Code Playgroud)
这将使PhoneGap API可用,它会覆盖浏览器的默认HTML5 gelocation调用,并通过本机调用获取设备的地理位置(您已在第一个提示中接受).
这将起作用,因为PhoneGap的API调用与HTML5的标准W3C调用相同:http://docs.phonegap.com/en/2.2.0/cordova_geolocation_geolocation.md.html#Geolocation
| 归档时间: |
|
| 查看次数: |
10617 次 |
| 最近记录: |