欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

uni-app微信小程序GPS位置獲取爬坑

freeflydom
2024年12月23日 16:17 本文熱度 378

前情

uni-app是我比較喜歡的跨平臺框架,它能開發小程序/H5/APP(安卓/iOS),重要的是對前端開發友好,自帶的IDE讓開發體驗也挺棒的,現在所在公司項目有抖音、快手、微信、支付、APP端,就是使用uni-app來開發的。

坑位

最近接手的項目是需要在下單前獲取用戶所有位置的GPS信息,再服務端會根據當前用戶的GPS信息來判定是否給當前用戶一定優惠。本以為就是調用一個API的事,但當你直接調用的時候你會發現根本無法使用。

Why?

位置信息屬于用戶隱私,從23年9月開始如果小程序需要獲取位置信息需要去小程序管理后臺:開發與服務-開發管理-接口設置-接口權限頁申請地理位置api權限方才能使用。

解決方案

STEP 1:申請權限

開發與服務-開發管理-接口設置-接口權限申請權限,這里又有一小坑,微信提供了二個獲取位置的接口

  1. wx.getLocation:獲取當前的地理位置、速度,支持高精度定位
  2. wx.getFuzzyLocation:獲取當前的模糊地理位置

在申請地理位置獲取api權限的時候,你需要填二項必填項,申請理由和場景說明,官方有提供申請成功的案例

我第一感覺是申請支持高精度定位的wx.getLocation,模精定位特有接口能做的支持高精度定位也一定能實現需求,于是我就申請了wx.getLocation接口,同時針對場景截了圖提交了申請,一天后發現申請不通過,于是又完善了資料再次提交又碰壁了,二天二次申請都被打回,一臉蒙逼。

搜了論壇都是說申請全被拒的,用模糊定位接口又不準,后面問了產品,我們只需要定位到市區級別行不行,產品說可以的,不用那么精確,于是轉而申請wx.getFuzzyLocation,半小時時間未到就收到申請通過的短信提醒(懷疑是機審,走個過場,哈哈哈)

所以在申請接口前要跟產品確認好對于gps位置的精度要求,如果模糊定位能實現那就不要去折騰申請高精度定位的接口了,微信對wx.getLocation接口管理的比較嚴格,如果你確實需要高精度接口,那你就按官方提供的參考申請案例補充資料再申請吧,但是從論壇里的抱怨來看申請可能不是那么容易,如果你要申請那就多費點心吧,在此祝好。

STEP 2:填寫接口權限配置

申請接口了并不就是說你就能直接調用了,你需要去app.json里補全位置權限獲取說明描述和對應的接口權限注明

"permission" : {
		"scope.userFuzzyLocation" : {
			"desc" : "為了給用戶提供更好的服務"
		}
	},
	"requiredPrivateInfos": ["getFuzzyLocation"]

如果你是使用uni-app的話,你直接用hbuilderx以源碼視圖方式打開manifest.json文件,找到mp-weixin微信項配置按如下配置好

STEP 3:接口調用

查了uni-app官方文擋都沒有找到uni.getFuzzyLocation接口的說明,但是你在調用的時候是可以調用的,如果你實在不放心,可以直接使用wx.getFuzzyLocation接口。

接口調用注意事項:

你調用uni/wx.getFuzzyLocation的時候如果沒有授過權會彈出授權的提示彈框,只有用戶同意了才能獲取地理位置信息,這里如果用戶拒絕就無法再次喚起授權彈框,微信會記住授權狀態,所以這里如果用戶選了同意,那就萬事大吉了,但是如果用戶選擇了拒絕,那后面就一直無法再獲取用戶位置信息了。

如果你獲取用戶的位置是可有可無的,你可以把位置信息當可選項,用戶不同意你就不上傳即可,但是如果你需求是位置信息是必需要的,那這里你需要做一些引導,引導用戶去開啟權限,對于引導你又要注意二種情況,一種是小程序位置授權沒開啟,另一種是微信APP位置權限沒開啟,下面是關鍵代碼:

uni.getFuzzyLocation({
	type: 'gcj02',
	success(res){
		// 位置信息獲取成功
		// ...
	},
	fail(err) {
		// 位置信息獲取失敗
		if (['getLocation:fail auth deny','getLocation:fail:auth denied','getLocation:fail:system permission denied'].includes(err.errMsg)) {
			if (是否是需要強制獲取位置信息的) {
			  //小程序位置信息獲取被拒絕
				if (['getLocation:fail auth deny','getLocation:fail:auth denied'].includes(err.errMsg)) {
					uni.showModal({
						content: "為了您享受到更好的優惠,請授權位置信息后下單",
						confirmText: '去授權',
						cancelText: '再想想',
						success(res) {
							if (res.confirm) {
								// 去小程序位置授權頁
								uni.openSetting();
							} else if (res.cancel) {
								console.log('小程序權授沒有開啟。微信用戶點擊取消');
							}
						}
					})
				}
				// 微信位置信息獲取權限沒有打開
				if (err.errMsg === 'getLocation:fail:system permission denied') {
					uni.showModal({
						content: "請確認是否已授權APP位置權限",
						confirmText: '知道了',
						showCancel: false,
						success(res) {
							console.log('微信app權限沒有開啟', res);
						}
					})
				}
			}
		}
	}
})

注:查了微信官方文擋,并沒有對應的錯誤提示說明,我是多次測試發現的上面的錯誤提示加入的判斷,如果你有官方的錯誤提示說明文擋鏈接,歡迎分享出來,謝謝了。

總結

使用微信的地理位置接口分三步

  1. 申請權限:按需選用wx.getFuzzyLocation(易申請)、wx.getLocation(較難申請)
  2. 填寫接口權限配置:原生小程序在app.json里配置,uniapp在manifest.json里配置
  3. 接口調用:根據自己需求這里要對權限失敗的場景做好引導

?轉自https://www.cnblogs.com/xwwin/p/18619824


該文章在 2024/12/23 16:17:38 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved