首次授權直接調用wx.getLocation();方法,如果用戶點擊允許 則在success回調里返回地理位置信息,並且在不清除授權數據的情況下,以后再次調用wx.getLocation();方法 不會出彈窗 直接走success
如果用戶在首次彈窗是選擇 拒絕 則在fail回調中返回 {
errMsg:"getLocation:fail auth deny"},並且在不清除授權數據的情況下,以后再次調用wx.getLocation();方法 不會出彈窗 直接走fail
所以正確授權邏輯 應該是:
1、進入頁面先通過wx.getSetting();判斷用戶是否授權以及授權成功與否
a>如果沒有地理位置的相關字段表示沒有授權 -- 調起首次授權
b>如果返回scope.userLocation: true,表示授權成功 則直接在success拿地理位置信息
c>如果返回scope.userLocation: false,表示拒絕授權
則需要用戶點擊按鈕 手動去設置允許獲取地位置 返回主頁面時
aa>允許 則返回 scope.userLocation: true,再次調用 wx.getLocation();方法 走success 返回地理位置信息
bb>拒絕 則返回scope.userLocation: false,
2、
產品流程:
首次進入頁面 調起wx.getLocation();彈窗授權
允許? 直接拿地理位置信息
拒絕? 出一個按鈕二次授權 方便用戶手動設置
3、打開地圖和選擇地理位置
二、打開小程序設置(wx.openSetting())的調用方式(2018-09-12日調整)
1、使用button組件觸發
代碼:<button open-type="openSetting" bindopensetting="callback">打開設置</button>
2、有用戶的點擊行為觸發wx.openSetting();接口調用;
代碼:<button bindtap="openSetting">打開設置</button> openSetting(){wx.openSetting()}
其中:方法2已在最新開發者工具中支持(基礎庫切到2.2.4以上)