export function chooseLocationGetAddress() {
return new Promise((resolve, reject) => {
console.log('? ~ chooseLocationGetAddress ~ promise')
uni.chooseLocation({
useSecureNetwork: true,
success(res) {
console.log('? ~ chooseLocationGetAddress ~ res:', res)
const addressObj = parseAddress(res.address)
if (res.latitude && res.longitude) {
const data = {
code: 200,
msg: '成功',
data: { ...addressObj, addressDetail: res.name },
}
resolve(data)
}
},
fail(err) {
console.log('? ~ chooseLocationGetAddress ~ err:', err)
reject(err)
},
})
},
)
}
- 发布:2026-07-09 18:05
- 更新:2026-07-09 19:45
- 阅读:63
【报Bug】 uniapp ios 腾讯地图调用uni.chooselocation 提示 Error: encrypt client key payload fail 页面列表空白
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows 11
HBuilderX类型: 正式
HBuilderX版本号: 5.06
手机系统: Android
手机系统版本号: Android 15
手机厂商: vivo
手机机型: iqoo neo 10
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
正常点击选择地址按钮,进入uni.chooseLocation页面,列表空白,控制台报错Error: encrypt client key payload fail
正常点击选择地址按钮,进入uni.chooseLocation页面,列表空白,控制台报错Error: encrypt client key payload fail
预期结果:
正常点击选择地址按钮,进入uni.chooseLocation页面,列表正常展示周边地址。
正常点击选择地址按钮,进入uni.chooseLocation页面,列表正常展示周边地址。
实际结果:
进入uni.chooseLocation页面,列表空白,控制台报错Error: encrypt client key payload fail
进入uni.chooseLocation页面,列表空白,控制台报错Error: encrypt client key payload fail
bug描述:
uniapp ios 腾讯地图调用uni.chooselocation 提示 Error: encrypt client key payload fail 页面列表空白。且用同配置打包Android可以正常使用uni.chooseLocation api
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
你好,我是 DCloud 官方人员。感谢你提交的 Bug 反馈。针对你反馈的 uni.chooseLocation 在 iOS 端提示 Error: encrypt client key payload fail 且列表空白的问题,我进行了详细的评审与分析,以下是评审意见及排查建议:
1. Bug 反馈内容完整性评审
- BUG 描述:描述清晰,明确指出了 iOS 端调用报错且列表空白,同时说明了同配置下 Android 端可以正常使用,这对排查平台差异非常有帮助。
- 代码示例:提供的代码示例包含了完整的 Promise 封装和
uni.chooseLocation调用,且使用了useSecureNetwork: true参数,可以直接运行,无需额外调整。 - 复现步骤:步骤简单明了,结合代码示例可以顺利复现。
- 预期与实际结果:预期结果合理,实际结果描述准确,符合该 Bug 的表现。
- 分类信息:包含 PC 环境、HBuilderX 版本(5.06 正式版)、Vue3 等关键信息。但需要补充说明的是,你填写的手机 OS 平台为 Android(机型 vivo iQOO Neo 10),而 Bug 描述中明确指出是 iOS 端出现的问题。建议后续反馈时注意核对设备信息,并补充 iOS 的具体机型和系统版本。
2. Bug 是否成立及原因分析
根据知识库依据,此问题通常是由于安全网络配置不完整或不一致导致的,并非框架本身的 Bug。
在 iOS 和 Android 平台,出于安全考虑,manifest.json 内配置的腾讯地图 Key 仅用于展示地图。uni.chooseLocation 依赖的地点搜索、逆地址解析功能需要通过 uniCloud 云对象 uni-map-co 来调用,并推荐通过安全网络保障 API 不被盗用。
参考官方文档:uni.chooseLocation 文档
你提供的代码中使用了 useSecureNetwork: true,这要求应用必须严格完成安全网络的接入。如果 Android 正常而 iOS 报错,极有可能是 iOS 端的安全网络配置缺失或未生效。此外,社区中也有开发者遇到相同报错,通常与自定义基座或云端打包的安全网络配置有关(参考:Ask 社区相同报错案例)。
3. 修复建议与排查步骤
请按照以下步骤检查你的 iOS 工程配置:
- 检查 manifest.json 模块配置:在 HBuilderX 中打开
manifest.json->App 模块配置-> 勾选安全网络模块。 - 重新制作自定义基座:修改模块配置后,必须重新制作包含安全网络模块的 iOS 自定义基座,标准基座或旧基座无法生效。
- 检查 uniCloud 关联:确保项目已正确关联 uniCloud 服务空间,并且应用已关联到该服务空间。
- 检查 uni-map-co 部署与配置:
- 确保已导入 uni-map-co 插件,并在
uni-config-center中正确配置了腾讯地图的 Key。 - 确保已上传
uni-map-co云对象、uni-config-center及uni-map-common公共模块到服务空间。 - 参考文档在
uni-map-co的index.obj.js入口文件中添加请求拦截逻辑,拒绝非法请求。
- 确保已导入 uni-map-co 插件,并在
- 备选方案:如果在 iOS 端不需要使用安全网络,可以尝试在代码中移除
useSecureNetwork: true参数,但这会降低服务端 API 的安全性。
请按照上述步骤排查 iOS 端的安全网络配置,通常配置完整并重新打包后即可解决此问题。