精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

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

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

前情

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

坑位

最近接手的項(xiàng)目是需要在下單前獲取用戶所有位置的GPS信息,再服務(wù)端會根據(jù)當(dāng)前用戶的GPS信息來判定是否給當(dāng)前用戶一定優(yōu)惠。本以為就是調(diào)用一個(gè)API的事,但當(dāng)你直接調(diào)用的時(shí)候你會發(fā)現(xiàn)根本無法使用。

Why?

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

解決方案

STEP 1:申請權(quán)限

開發(fā)與服務(wù)-開發(fā)管理-接口設(shè)置-接口權(quán)限申請權(quán)限,這里又有一小坑,微信提供了二個(gè)獲取位置的接口

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

在申請地理位置獲取api權(quán)限的時(shí)候,你需要填二項(xiàng)必填項(xiàng),申請理由和場景說明,官方有提供申請成功的案例

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

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

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

STEP 2:填寫接口權(quán)限配置

申請接口了并不就是說你就能直接調(diào)用了,你需要去app.json里補(bǔ)全位置權(quán)限獲取說明描述和對應(yīng)的接口權(quán)限注明

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

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

STEP 3:接口調(diào)用

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

接口調(diào)用注意事項(xiàng):

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

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

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 (是否是需要強(qiáng)制獲取位置信息的) {
			  //小程序位置信息獲取被拒絕
				if (['getLocation:fail auth deny','getLocation:fail:auth denied'].includes(err.errMsg)) {
					uni.showModal({
						content: "為了您享受到更好的優(yōu)惠,請授權(quán)位置信息后下單",
						confirmText: '去授權(quán)',
						cancelText: '再想想',
						success(res) {
							if (res.confirm) {
								// 去小程序位置授權(quán)頁
								uni.openSetting();
							} else if (res.cancel) {
								console.log('小程序權(quán)授沒有開啟。微信用戶點(diǎn)擊取消');
							}
						}
					})
				}
				// 微信位置信息獲取權(quán)限沒有打開
				if (err.errMsg === 'getLocation:fail:system permission denied') {
					uni.showModal({
						content: "請確認(rèn)是否已授權(quán)APP位置權(quán)限",
						confirmText: '知道了',
						showCancel: false,
						success(res) {
							console.log('微信app權(quán)限沒有開啟', res);
						}
					})
				}
			}
		}
	}
})

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

總結(jié)

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

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

?轉(zhuǎn)自https://www.cnblogs.com/xwwin/p/18619824


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

主站蜘蛛池模板: 成人做受黄大片 | 久久久久无码精品国产 | 久久久久久av无码免费网站下载 | 欧美人妻精品一区二区三区 | www国产亚洲精品久久久日本 | 小13箩利洗澡无码自慰网站 | 亚洲国产成人精品无码一区二区三区 | 亚洲综合网国产精品一区 | 字幕制服中文在线 | 亚洲日韩另类制服无码 | 午夜中文字幕屏蔽 | 麻豆人妻少妇精品无码专 | 国产精品久久久久国产a级 国产精品久久久久激情影院 | gay熟女狠狠噜天天噜日日噜视 | 亚洲av午夜福利精品一区 | 澳门无码| 日韩无码偷拍中文字幕 | 亚洲综合色婷婷 | 国产免费久久精品国产传媒 | 欧美最猛黑人xxxxx猛交 | 国产成人欧美视频在线观看 | 亚洲欧美自拍明星换脸 | 亚洲丰满爆乳熟女在线观看 | 四虎精品国产永久免费地址 | 亚洲精品中文字幕无码视频 | 一本久久a久久精品综合麻豆 | 夜夜操天天日 | 亚洲成a无码一区二区三区 亚洲成v人片在线观看福利 | 粗大的内捧猛烈进出在线视频 | 亚洲欧洲巨乳清纯 | 精品国产一区二区三区av性色 | 四虎影视在线影院在线观看免费视频 | 91精品国产自产在线观永 | 亚洲综合色丁香婷婷六月图片 | 伊人永久入口 | 国产成人三级电影在线观看 | 国产成人无码精品午夜福利a | 99久久国产福利自产拍 | 亚洲av乱码中文一区二区三区 | 东京热无码中文字幕av专区 | 国产女同三级在线观看 |