HTML5-Geolocation不允許定位后再次彈出用戶權(quán)限提示

今天遇到一個奇怪的問題,同樣域名,同樣的JS,index.html是可以彈出定位提示框,但是product.html卻不行:
https://aa.haha.com/index.html
https://aa.haha.com/aaa/product.html

google之后發(fā)現(xiàn)前輩文章(http://www.skyfox.org/html5-geolocation-safari-user-permission-prompt.html
幾次嘗試后得出結(jié)果,這個是通過url去做得緩存,所以需要進行還原下。

解決方案就是,需要在系統(tǒng)中就行清理緩存的設(shè)置:

(設(shè)置)Settings -> (通用)Genera -> (重置) Reset-> (重置定位于隱私)Reset Location & Privacy.
(設(shè)置)Settings ->( 隱私)Privacy 開啟 Location Services.

重新進入頁面即可提示用戶權(quán)限提示了!

在Safari或者在使用UIWebview的APP中當(dāng)點擊“不允許”選項之后webapp/html5 的定位服務(wù)不能再次顯示用戶權(quán)限提示框。

可以用這個源碼做測試

<!DOCTYPE html>
<html>
<body>
<p id="demo">點擊這個按鈕,獲得您的坐標(biāo):</p>
<button onclick="getLocation()">試一下</button>
<script>
var x=document.getElementById("demo");
function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition,showError);
    }
  else{x.innerHTML="Geolocation is not supported by this browser.";}
  }
function showPosition(position)
  {
  x.innerHTML="Latitude: " + position.coords.latitude + 
  "<br />Longitude: " + position.coords.longitude;  
  }
function showError(error)
  {
  switch(error.code) 
    {
    case error.PERMISSION_DENIED:
      x.innerHTML="User denied the request for Geolocation."
      break;
    case error.POSITION_UNAVAILABLE:
      x.innerHTML="Location information is unavailable."
      break;
    case error.TIMEOUT:
      x.innerHTML="The request to get user location timed out."
      break;
    case error.UNKNOWN_ERROR:
      x.innerHTML="An unknown error occurred."
      break;
    }
  }
</script>
</body>
</html>

不管是原生iOS APP嵌入單個h5頁面,還是都是h5頁面的webapp也好,只要涉及到定位都會遇到這個情況。

當(dāng)請求iOS開始定位的時候,會彈出一個提示框,提示你是否"允許"定位,允許定位繼續(xù)下一步,如果一不小心點了下"不允許"之后,會發(fā)現(xiàn),下次進到這個h5之后再也不會提示請求定位權(quán)限的提示框了。"不允許"被緩存了下來。再次調(diào)用geolocation會報 error.PERMISSION_DENIED 錯誤

而且沒有相應(yīng)的api能重啟提示框。

如果說h5頁面用于app中顯示,可以嘗試使用js與app原生交互來獲取定位,原生獲取定位后反傳給h5,這樣當(dāng)整個app的定位權(quán)限被用戶拒絕與開啟的時候,直接到設(shè)置中對應(yīng)的app下就可以恢復(fù)了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,045評論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,328評論 4 61
  • 今天是重陽節(jié),由于工作的原因吧,心情比較浮躁。打開暢讀軟件,看看雜志,靜靜心。第一次打開會彈出今天的日簽,上面寫著...
    留白r閱讀 300評論 0 0
  • 遇于樓下 我們都感到有打招呼的必要 結(jié)果還是無語擦肩而過 那是我曾向許多人投遞的眼神 今天我也拒絕了這樣的眼神 并...
    青花滿袖閱讀 272評論 0 1
  • 1.要想操作數(shù)據(jù)庫首先要使用這個數(shù)據(jù)庫:use 數(shù)據(jù)庫名字; ERROR 1046 (3D000): No dat...
    FSDemo閱讀 296評論 0 0

友情鏈接更多精彩內(nèi)容