2***@qq.com
2***@qq.com
  • 发布:2026-04-11 16:48
  • 更新:2026-04-11 16:49
  • 阅读:16

【报Bug】获取权限失败错误信息、错误码各平台不一致,并且文档中没有列出各种情况的错误信息、错误码

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.87

手机系统: 全部

手机厂商: 华为

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

安卓、苹果、鸿蒙、小程序

操作步骤:

例如:uni.saveImageToPhotosAlbum、uni.chooseImage、uni.chooseMedia、uni.chooseVideo、uni.getLocation等级方法

预期结果:

错误码、错误信息返回一致

实际结果:

错误码、错误信息返回不一致

bug描述:

ios、安卓、鸿蒙、小程序,几个平台获取权限失败错误信息、错误码各平台不一致,并且文档中没有列出各种情况的错误信息、错误码
例如:uni.saveImageToPhotosAlbum、uni.chooseImage、uni.chooseMedia、uni.chooseVideo、uni.getLocation等级方法

2026-04-11 16:48 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

这个反馈涉及跨平台错误码一致性的体验问题,我来逐条评审:

1. 反馈完整性评估

不足之处:

  • 缺少代码示例:未提供具体的调用代码和错误捕获逻辑,官方无法判断是API调用方式问题还是确实存在返回差异
  • 缺少具体错误码对比:未列出iOS、Android、鸿蒙、小程序各平台具体的错误码和错误信息文本,无法验证"不一致"的具体表现
  • 复现步骤过于笼统:仅列举方法名,未说明具体的权限拒绝场景(如用户点击拒绝、权限被系统禁用、设备不支持等)

合理之处:

  • 分类信息完整(版本号4.87、Vue3、Windows环境等)
  • 问题描述明确指出了具体受影响的API范围

2. Bug成立性分析

根据知识库中错误规范文档的记载:

确实存在平台差异:

  • 小程序平台错误码彼此可能冲突,不同小程序平台返回的errCode可能不一样
  • App-Android端使用7xx错误码、App-iOS端使用8xx、harmony next端使用5xx、Web端使用9xx,这种分区机制天然导致同一场景在不同平台返回码不同

改进措施:
DCloud从2022-11-11起推行UniError规范,通过errSubject(模块名称)+errCode(统一错误码)+cause(源错误)来规范跨平台错误。但文档也明确说明:"对于已经实现的API,继续保留现有errCode规范(保留向下兼容)"。

结论: 该反馈部分成立。老API确实存在跨平台错误码不一致的历史遗留问题,新API已按UniError规范实现。但文档确实需要完善,列出各平台具体的错误码映射。

3. 建议补充内容

如需官方定位和修复,建议补充:

  1. 具体测试代码:包含fail回调中打印errCodeerrMsg的代码
  2. 平台对比表
API iOS错误码 Android错误码 鸿蒙错误码 小程序错误码
uni.getLocation ? ? ? ?
  1. 具体场景:是用户拒绝权限、权限被系统禁用、还是设备不支持?

4. 当前可行方案

根据知识库,建议:

  • 临时方案:在fail回调中通过uni.getSystemInfoSync().platform判断平台,分别处理不同错误码
  • 权限处理:对于鸿蒙平台,注意使用#ifdef APP-HARMONY条件编译,并参考鸿蒙位置权限配置指南
  • 关注规范:新开发的API已按UniError规范返回统一格式,可通过errSubjecterrCode进行跨平台一致的错误处理

评审结论:该反馈作为体验优化建议有效,但作为Bug修复工单需要补充具体的错误码对比数据和复现工程。建议用户补充具体案例后转为文档完善需求或老API兼容性优化需求。

内容为 AI 生成,仅供参考

要回复问题请先登录注册