微信小程序:用戶拒絕小程序獲取當前位置后的處理辦法

【1】問題描述:

  • 小程序在調用 wx.getLocation() 獲取用地理位置時,如果用戶選擇拒絕授權,代碼會直接拋出錯誤。如果再次調用 wx.getLocation() 時,就不會在彈窗詢問用戶是否允許授權。導致用戶想要重新允許獲取地理位置時,沒有途徑。

【2】前提準備:

  • 小程序已經 申請過 wx.getLocation() :獲取當前的地理位置 的服務權限
  • 在小程序的根目錄下的 app.json 中配置 requiredPrivateInfos 進行聲明啟用
    • 在調用 wx.getLocation() 時需要在 app.json 配置 permission 字段,同時使用 scope.userLocation 聲明收集用戶選擇的位置信息的目(wx.chooseLocation() 接口不需要配置該字段,可以直接進行調用)
    
    {"requiredPrivateInfos": ["getLocation"],"permission": {"scope.userLocation": {"desc": "獲取用戶位置信息用于填寫收貨地址"}}
    }
    

【3】解決思路:

  • 與直接調用 wx.getLocation()不同, 我們需要優化授權的流程:

    1. 用戶進入到需要授權地理位置的頁面,首先使用 wx.getSetting() 獲取用戶所有的授權信息,查詢是否已經授權地理位置信息。wx.getSetting() 返回一個 authSetting 對象,對象只會包含小程序已經向用戶請求過的權限,以及授權結果。
    2. 在 authSetting 對象 中,authsetting['scope.userLocation'] 的返回值表示是否已經授權獲取地理位置的信息:
      • 返回 true:用戶之前已經允許小程序獲取用戶的地理位置信息,直接用 wx.getLocation() 獲取用戶位置信息即可
      • 返回 false:用戶已經拒絕授權訪問地理位置信息
      • 返回 undefined:用戶即沒有同意也沒有拒絕,可以用 wx.getLocation() 方法,微信小程序將會顯示彈框,詢問用戶是否允許小程序獲取地理位置
    3. 如果用戶之前已經拒絕獲取地理位置信息,現在小程序需要該信息時,可以使用 wx.showModal() 彈出一個彈框,詢問用戶是否進行授權
    4. 當用戶允許授權是,通過 wx.openSetting() 調起微信客戶端小程序設置界面,用戶可以進行設置權限。

注意事項:

  1. 如果希望用戶再次授權,就需要讓用戶進行 手動開啟授權
  2. wx.openSetting() 必須用戶發生點擊行為后,才可以跳轉到設置頁進行授權信息管理。

【4】代碼:

  1. index.wxml

    <button type="primary" bind:tap="getUserPosition">獲取用戶地理位置信息</button>
    
  2. index.js

    // index.js
    Page({async getUserPosition() {const {  authSetting } = await wx.getSetting()if (authSetting['scope.userLocation'] === false) {// 用戶之前已經拒絕授權,現在希望能夠再次授權// 使用對話框提示用戶進行授權wx.showModal({title: '授權提示',content: '需要獲取地理位置信息,請確認授權',complete: async ({ confirm, cancel }) => {if (confirm) {const {authSetting} = await wx.openSetting()// 用戶再次拒絕授權if (!authSetting['scope.userLocation']) {wx.showToast({icon: 'none',title: '授權失敗'})return}// 已經允許獲取位置信息const res = await wx.getLocation()console.log(res);} else {wx.showToast({icon: 'none',title: '您已拒絕授權'})}},})} else {try {const res = await wx.getLocation()console.log(res);} catch (error) {console.log(error);wx.showToast({icon: 'none',title: '您已拒絕授權獲取位置信息'})}}}
    })
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898468.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898468.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898468.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NLP 與常見的nlp應用

自然語言處理&#xff08;NLP&#xff09;是一個廣泛的領域&#xff0c;它不僅包括自然語言理解&#xff08;NLU&#xff09;&#xff0c;還涉及一系列其他任務和子領域。以下是NLP領域中的主要組成部分及其相關任務&#xff1a; 1. 自然語言理解&#xff08;NLU&#xff09; …

全網首創/純Qt/C++實現國標GB28181服務/實時視頻/云臺控制/預置位/錄像回放和下載/事件訂閱/語音對講

一、前言說明 用純Qt來實現這個GB28181的想法很久了&#xff0c;具體可以追溯到2014年&#xff0c;一晃十年都過去了&#xff0c;總算是整體的框架和邏輯都打通了&#xff0c;總歸還是雜七雜八的事情多&#xff0c;無法靜下心來研究具體的協議&#xff0c;最開始初步了解協議后…

Django+celery+flower

Djangoceleryflower Django的定時任務及可視化監控Django Django的定時任務及可視化監控 Django的定時任務&#xff0c;以及可視化監控。 Django Django&#xff1b; 首先在python中新建虛擬環境并激活 pip install virtualenv python -m venv venv source venv/bin/activa…

Python 編程題 第十一節:選擇排序、插入排序、刪除字符、目標移動、尾部的0

選擇排序 假定第一個為最小的為已排序序列&#xff0c;與后面的比較&#xff0c;找到未排序序列中最小的后&#xff0c;交換位置&#xff0c;獲得最小元素&#xff0c;依次往后 lst[1,14,25,31,21,13,6,8,14,9,7] def selection_sort(lst):for i in range(len(lst)):min_inde…

組態王Kingview配置為OPCUA服務器的一些問題處理

一、問題描述 1、組態王【運行配置】界面沒有【服務配置】的選項&#xff0c;無法將組態王Kingview配置為OPCUA服務器&#xff1b; 2、點擊組態王【運行配置界面】的【服務配置】選項彈窗警告提示【試圖執行的操作不受支持】&#xff0c;如下圖所示&#xff1a; 二、問題分析 …

模塊二 單元4 安裝AD+DC

模塊二 單元4 安裝ADDC 兩個任務&#xff1a; 1.安裝AD活動目錄 2.升級當前服務器為DC域控制器 安裝前的準備工作&#xff1a; 確定你要操作的服務器系統&#xff08;Windows server 2022&#xff09;&#xff1b; 之前的服務器系統默認是工作組的模式workgroup模式&#xff08…

git clone項目報錯fatal: fetch-pack: invalid index-pack output問題

前情回顧&#xff1a;git項目放在公司服務器上面&#xff0c;克隆等操作需要連接VPN才能操作。由于項目比較大&#xff0c;網速比較慢&#xff0c;克隆項目經常出現fetch-pack: invalid index-pack output。在網上查找各種解決方法。也就這一種有點效果。僅供參考&#xff0c;不…

前端Tailwind CSS面試題及參考答案

解釋 Tailwind CSS 中 w-1/2 和 max-w-md 的區別及適用場景 在 Tailwind CSS 里&#xff0c;w-1/2 和 max-w-md 屬于不同類型的寬度控制類&#xff0c;它們的功能和適用場景存在明顯差異。 w-1/2 是用來設定元素寬度的類。它把元素寬度設定為其父元素寬度的一半。例如&#xff…

《深度剖析:BERT與GPT——自然語言處理架構的璀璨雙星》

在自然語言處理&#xff08;NLP&#xff09;的廣袤星空中&#xff0c;BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;與GPT&#xff08;Generative Pretrained Transformer&#xff09;系列模型宛如兩顆最為耀眼的星辰&#xff0c;引領…

VMware主機換到高配電腦,高版本系統的問題

原來主機是i3 ,windows7系統&#xff0c;vmware 14.0,虛機系統是ubuntu 14.04。目標新機是i7 14700KF,windows11系統。原以為安裝虛擬機&#xff0c;將磁盤文件&#xff0c;虛擬機配置文件拷貝過去可以直接用。 新目標主機先安裝了vmware 15&#xff0c;運行原理虛機&#xff0…

后端框架模塊化

后端框架的模塊化設計旨在簡化開發流程、提高可維護性&#xff0c;并通過分層解耦降低復雜性。以下是常見的后端模塊及其在不同語言&#xff08;Node.js、Java、Python&#xff09;中的實現方式&#xff1a; 目錄 1. 路由&#xff08;Routing&#xff09;2. 中間件&#xff08;…

MDG實現BP客商復雜邏輯校驗的方法

引言 項目中可能常用的增強點是USMD_RULE_SERVICE來實現復雜的校驗邏輯&#xff0c;除此之外&#xff0c;SAP對BP主數據還提供了以下的實現方式。 方法1-替換ERP校驗類 眾所周知&#xff0c;BP存在復雜的ERP校驗&#xff0c;主要通過類CL_MDG_BS_FND_BP_CHECK&#xff08;子…

基于springboot的教務系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 這些年隨著Internet的迅速發展&#xff0c;我們國家和世界都已經進入了互聯網大數據時代&#xff0c;計算機網絡已經成為了整個社會以及經濟發展的巨大動能&#xff0c;各個高校的教務工作成為了學校管理事務的重要目標和任務&#xff0c;因此運用互聯網技術來提高教務的…

TDengine 中的流式計算

簡介 TDengine 中的流計算&#xff0c;功能相當于簡化版的 FLINK &#xff0c; 具有實時計算&#xff0c;計算結果可以輸出到超級表中存儲&#xff0c;同時也可用于窗口預計算&#xff0c;加快查詢速度。 創建流式計算 CREATE STREAM [IF NOT EXISTS] stream_name [stream_o…

代碼隨想錄day23 回溯part2

39.組合總和 給你一個 無重復元素 的整數數組 candidates 和一個目標整數 target &#xff0c;找出 candidates 中可以使數字和為目標數 target 的 所有 不同組合 &#xff0c;并以列表形式返回。你可以按 任意順序 返回這些組合。 candidates 中的 同一個 數字可以 無限制重…

回調函數中 qsort 函數的使用

目錄 一.冒泡排序 二.指針類型 void* 三. qsort 1.簡介 2.研究函數參數 3.怎么用&#xff1f; (1)排數組&#xff0c;升序 (2)排序結構體 四.用冒泡排序思想&#xff0c;模擬實現 qsort (可排序任意類型數據) 1.函數參數設計 2.在 if (cmp( )>0) 怎么傳參&#x…

電機控制常見面試問題(十四)

文章目錄 一.電機信噪比二.電機零點偏移校正和極對數自適應1.零點偏移量檢測?2. 極對數識別三.交流電機電流紋波怎么產生的1.電源相關因素2.電機本體特性3.?PWM逆變器諧波4.負載與環境干擾5.診斷流程建議 四.談談對諧波的理解1.諧波定義2.次諧波產生源3.次諧波的檢測與分析4.…

axios和fetch的對比

axios 和 fetch 是用于發起 HTTP 請求的兩種常見工具&#xff0c;它們的主要區別如下&#xff1a; 1. 瀏覽器兼容性 axios&#xff1a;基于 XMLHttpRequest&#xff0c;兼容性較好&#xff0c;支持較舊的瀏覽器&#xff08;如 IE11&#xff09;。fetch&#xff1a;現代瀏覽器…

Java Timer定時任務源碼分析

前言 Java 提供的java.util.Timer類可以用來執行延時任務&#xff0c;任務可以只執行一次&#xff0c;也可以周期性的按照固定的速率或延時來執行。 實現一個延時任務調度器&#xff0c;核心有兩點&#xff1a; 如何存儲延時任務如何調度執行延時任務 源碼分析 TimerTask …

【安全運營】用戶與實體行為分析(UEBA)淺析

目錄 用戶與實體行為分析&#xff08;UEBA&#xff09;簡介一、UEBA的核心概念1. 行為基線建立2. 異常檢測3. 風險評分4. 上下文關聯 二、UEBA的應用場景1. 內部威脅檢測2. 外部威脅應對3. 合規性和審計支持 三、UEBA的技術實現1. 大數據技術2. 機器學習算法3. 可視化工具 四、…