gpt4 book ai didi

javascript - 如何防止在 Phonegap 应用程序中双重提示地理位置?

转载 作者:可可西里 更新时间:2023-11-01 03:06:58 26 4
gpt4 key购买 nike

我为 iPhone 创建了一个 PhoneGap 应用程序,它通过 webview 中的 JavaScript 使用地理定位。

当我第一次运行该应用时,它会提示我允许对该应用进行地理定位。

当我点击“确定”时,它会再次提示我相同的问题,但这次它指出“index.html”需要使用地理定位的权限。

这是有道理的,因为 iOS 可能第一次需要允许应用程序本身进行地理定位的权限,而浏览器第二次需要权限。

但是,由于不会带来出色的用户体验:

如何防止出现这种双重提示? (如果可以阻止第二个提示,我就足够了)

最佳答案

我找到了问题的原因。

在 Phonegap 完全加载之前调用 navigator.geolocation.getCurrentPosition(onsuccess, onerror)

这意味着正在触发 webview 的地理定位调用(而不是通过 PhoneGap 的 native 调用),这将再次请求许可(这确实有意义)。将其与智能手机上的普通 Safari 浏览器进行比较。它会为每个新网站请求地理定位许可。在应用程序启动时通过 PhoneGap 加载 index.html 时也是如此。

但是,解决方案是等待 PhoneGap 完全加载时触发的 deviceready 事件:

document.addEventListener("deviceready", function(){
navigator.geolocation.getCurrentPosition(onsuccess, onerror, params);
}, false);

这将使 PhoneGap API 可用,它会覆盖浏览器的默认 HTML5 地理定位调用,并通过 native 调用(您已在第一个提示中接受)获取设备的地理位置。

这会起作用,因为 PhoneGap 的 API 调用与 HTML5 的标准 W3C 调用相同:http://docs.phonegap.com/en/2.2.0/cordova_geolocation_geolocation.md.html#Geolocation

关于javascript - 如何防止在 Phonegap 应用程序中双重提示地理位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13857165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com