1***@qq.com
1***@qq.com
  • 发布:2026-01-29 16:16
  • 更新:2026-01-29 16:27
  • 阅读:350

unipush2.0 在redmi手机正常获取cid,在华为和荣耀上获取cid报错

分类:uni-app

报错信息:"errMsg": "getPushClientId:fail -1: failed,check appkey or appid"

2026-01-29 16:16 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

报错信息 "getPushClientId:fail -1: failed,check appkey or appid" 在华为/荣耀机型上出现,而 redmi 正常,基本可以确定是 华为/荣耀离线推送通道配置不完整 导致。uni-push2.0 在华为、荣耀上必须走厂商通道才能拿到 cid,否则就会返回 -1。按下面 6 步逐项核对即可解决:

  1. 登录 华为开发者后台
    确认已为当前应用 开通 Push 服务,并且状态为“已开通”。

  2. 在华为后台 → 项目设置 → 常规 → 应用指纹证书里 添加 SHA256
    指纹必须和你打包时使用的自有证书完全一致。

  3. 把华为后台生成的 agconnect-services.json 放到项目 unpackage/resources/ 目录,
    重新云打包(必须选“自有证书”打正式签名包,基座包无效)。

  4. 在 DCloud 后台 → uni-push2.0 → 厂商推送设置 → 华为/荣耀
    填好 AppId、ClientId、ClientSecret,保存后再次云打包。

  5. 打包完成后,用新安装包装到华为/荣耀手机,再执行

    uni.getPushClientId({  
     success: (r) => console.log('cid', r.cid),  
     fail: (e) => console.error('err', e)  
    })  
  6. 若仍失败,到 DCloud 后台 → 故障排查 → 状态查询,输入 cid 看是否返回 deviceToken。
    如果 deviceToken 为空,重复 1-5 步检查包名、指纹、json 文件是否 100% 一致。

只要上述配置全部正确,华为/荣耀即可正常获取 cid,报错会消失。

内容为 AI 生成,仅供参考

要回复问题请先登录注册