必须在 manifest.json 的 mp-weixin 节点下同时配置 requiredprivateinfos(数组,与 appid 同级)和 permission,且 requiredprivateinfos 须填实际用到的接口如 ["getlocation"];permission.desc 必须带具体业务场景,如“展示附近充电桩并规划导航路线”;公众平台后台需同步开通接口、勾选地理位置并填写一致 desc,且代码层须先调 uni.getsetting 再按 authsetting 状态处理。

必须在 manifest.json 的 mp-weixin 节点下同时配置 requiredPrivateInfos 和 permission,缺一不可;否则 uni.getLocation 或 uni.chooseLocation 会直接失败,且错误提示可能不明确。
manifest.json 中 requiredPrivateInfos 必须显式声明
微信从 2022 年起强制要求所有隐私接口调用前必须白名单声明。只配 permission 不管用,requiredPrivateInfos 是硬性门槛。
-
requiredPrivateInfos必须是数组,且与appid同级,不能嵌套在permission里 - 只写实际用到的接口:如只调
uni.getLocation,填["getLocation"];若还用选点,则加"chooseLocation" - 混入无关接口(比如
"getPhoneNumber")会导致审核被拒 - HBuilderX 修改后必须「停止运行 → 重新编译」,热更新不会生效
permission.desc 字段不是可选项,而是审核关键点
这个字段会直接出现在用户授权弹窗中,微信审核团队会逐字比对它和小程序实际功能是否一致。
- 不能写“用于定位服务”“获取位置信息”这类空泛描述
- 要带具体业务场景,例如:
"您的位置信息将用于展示附近充电桩并规划导航路线" - 如果小程序有地图选点功能,desc 里最好体现“选点”或“查找地点”相关意图
- 多个平台共用一份
manifest.json时,注意其他平台(如支付宝)不认这个字段,但微信端必须存在
微信公众平台后台三项配置缺一不可
仅改本地配置远远不够,后台未同步开通,调用照样失败。
- 「开发管理 → 接口设置」里申请开通
getLocation和chooseLocation权限 - 「账号设置 → 用户隐私保护指引」中勾选「地理位置」,并填写与
manifest.json中完全一致的desc内容 - 「开发设置 → 服务器域名」中添加
https://apis.map.qq.com(腾讯地图 SDK 必须) - 后台修改后,微信开发者工具可能缓存旧配置,建议重启工具或清缓存再试
代码层必须做状态兜底,不能跳过 uni.getSetting
直接调 uni.getLocation 是多数人卡住的起点。用户一旦拒绝过,再调就会静默进 fail 回调,不会弹窗。
- 每次调用前必须先执行
uni.getSetting,读取authSetting['scope.userLocation'] - 值为
true→ 直接调用;为undefined→ 走uni.authorize;为false→ 弹uni.showModal+uni.openSetting - 注意:iOS 和 Android 上
uni.authorize对已拒绝过的 scope 不再弹窗,跳过检查等于功能瘫痪 - 建议封装成 Promise 工具函数,避免重复逻辑散落在各页面
最容易被忽略的是三处 desc 字段的一致性:manifest.json、公众平台隐私指引、小程序内实际功能描述,哪怕标点符号不同都可能触发审核驳回。别省略任何一层。











