必须彻底移除所有地理位置权限声明及调用:微信小程序需同步删除 permission.scope.userlocation 和 requiredprivateinfos;app 端须清空 android 的 location 权限声明和 ios 的 plist 定位描述字段;代码层需全局搜索并删除 getlocation 等相关调用及第三方插件定位逻辑;最后更新公众平台隐私指引。

不能“取消”已声明的地理位置权限——只要 manifest.json 里还保留相关配置,微信或 App 平台就会认为你“需要该能力”,审核、弹窗、系统检查都会照常触发。真正要做的,是**彻底移除所有关联声明**,并确认无残留逻辑调用。
微信小程序:删掉 mp-weixin 下的 permission 和 requiredPrivateInfos
这两个字段必须同时清除,缺一不可:
-
permission.scope.userLocation声明会触发首次进入时的授权弹窗,即使你代码里没调uni.authorize,微信也可能静默拦截uni.getLocation -
requiredPrivateInfos是接口白名单,漏删会导致getLocation:fail the api need to be declared in the requiredPrivateInfos field这类错误持续出现 - 别只删
desc或留空字符串——微信会把空desc当作未配置,仍可能拒审或报错 - 删完后务必在 HBuilderX 中「停止运行 → 重新编译」到微信开发者工具,否则
app.json里旧配置可能还在
App 端:分平台清理 distribute.android.permissions 和 distribute.ios.plist
App 平台不会读 mp-weixin 的配置,但也不会自动忽略它;必须手动清空原生层声明:
- Android:删掉
distribute.android.permissions数组中所有含ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION的 XML 字符串,例如:"<uses-permission android:name='\"android.permission.ACCESS_FINE_LOCATION\"/'>"</uses-permission> - iOS:删掉
distribute.ios.plist中的NSLocationWhenInUseUsageDescription和NSLocationAlwaysAndWhenInUseUsageDescription字段,值和键都要删干净 - 注意:删完后真机调试仍可能缓存旧包,建议卸载重装,否则
plus.android.requestPermissions仍可能被系统拦截
代码层:搜索并删除所有位置相关调用
配置删了,但代码里还留着 uni.getLocation、uni.authorize、plus.ios.requestPermission 等,运行时仍会触发失败回调甚至崩溃:
- 全局搜索关键词:
getLocation、getFuzzyLocation、chooseLocation、scope.userLocation、requestPermissions、requestPermission - 特别注意 utils、store、main.js 等公共文件,容易遗漏复用逻辑
- 如果用了第三方地图插件(如腾讯地图 SDK),检查其是否自带定位初始化,有些插件会在
onLaunch里自动请求权限
最易被忽略的一点:微信公众平台后台的「用户隐私保护指引」里若还勾选了「地理位置」,即使前端全删了,审核时仍可能因前后端描述不一致被卡。删完代码和配置后,记得登录后台同步取消勾选。











