l***@163.com
l***@163.com
  • 发布:2026-07-09 18:05
  • 更新:2026-07-09 19:45
  • 阅读:63

【报Bug】 uniapp ios 腾讯地图调用uni.chooselocation 提示 Error: encrypt client key payload fail 页面列表空白

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows 11

HBuilderX类型: 正式

HBuilderX版本号: 5.06

手机系统: Android

手机系统版本号: Android 15

手机厂商: vivo

手机机型: iqoo neo 10

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

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)
},
})
},
)
}

操作步骤:

正常点击选择地址按钮,进入uni.chooseLocation页面,列表空白,控制台报错Error: encrypt client key payload fail

预期结果:

正常点击选择地址按钮,进入uni.chooseLocation页面,列表正常展示周边地址。

实际结果:

进入uni.chooseLocation页面,列表空白,控制台报错Error: encrypt client key payload fail

bug描述:

uniapp ios 腾讯地图调用uni.chooselocation 提示 Error: encrypt client key payload fail 页面列表空白。且用同配置打包Android可以正常使用uni.chooseLocation api

2026-07-09 18:05 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( 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 工程配置:

  1. 检查 manifest.json 模块配置:在 HBuilderX 中打开 manifest.json -> App 模块配置 -> 勾选 安全网络 模块。
  2. 重新制作自定义基座:修改模块配置后,必须重新制作包含安全网络模块的 iOS 自定义基座,标准基座或旧基座无法生效。
  3. 检查 uniCloud 关联:确保项目已正确关联 uniCloud 服务空间,并且应用已关联到该服务空间。
  4. 检查 uni-map-co 部署与配置
    • 确保已导入 uni-map-co 插件,并在 uni-config-center 中正确配置了腾讯地图的 Key。
    • 确保已上传 uni-map-co 云对象、uni-config-centeruni-map-common 公共模块到服务空间。
    • 参考文档在 uni-map-coindex.obj.js 入口文件中添加请求拦截逻辑,拒绝非法请求。
  5. 备选方案:如果在 iOS 端不需要使用安全网络,可以尝试在代码中移除 useSecureNetwork: true 参数,但这会降低服务端 API 的安全性。

请按照上述步骤排查 iOS 端的安全网络配置,通常配置完整并重新打包后即可解决此问题。

内容为 AI 生成,仅供参考
DCloud_App_Array

DCloud_App_Array

请提供appid

要回复问题请先登录注册