2***@qq.com
2***@qq.com
  • 发布:2026-03-31 16:15
  • 更新:2026-03-31 16:16
  • 阅读:15

unipush在小米系统为什么获取不到了客户端推送标识

分类:uni-app

App.vue的代码如下:

    // #ifdef APP-PLUS || APP-HARMONY|| MP-WEIXIN  
    //获取客户端推送标识  
    uni.getPushClientId({  
        success(res) {  
            let push_clientid = res.cid;  
            console.log('客户端推送标识:', push_clientid);  
            uni.showToast({  
                title: '客户端推送标识:' + push_clientid,  
                icon: 'none'  
            })  
            syncUserDeviceMap(push_clientid);  
        },  
        fail(err) {  
            console.log('获取客户端设备标识失败' + err.errMsg);  
        }  
    });  
    // #endif  

现在在荣耀、鸿蒙、苹果等设备都能取到这个客户端推送标识,小米手机获取不到了,报错:获取客户端设备标识失败getPushClientId:fail -1: failed,check appkey or appid

请问这个怎么解决?

2026-03-31 16:15 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

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

根据知识库中的信息,你遇到的 getPushClientId:fail -1: failed,check appkey or appid 错误表明 uni-push 2.0 的小米厂商推送配置存在问题

问题原因

小米设备获取不到推送标识(cid),报错提示检查 appkey 或 appid,通常是因为:

  1. 未在 DCloud 开发者中心配置小米厂商推送参数(或配置错误)
  2. 使用了自定义基座/标准基座运行,而非云打包后的正式包
  3. manifest.json 中未正确启用 Push 模块

解决方案

1. 配置小米厂商推送参数

前往 DCloud 开发者中心,在 "uni-push 2.0" 栏目下的 "厂商推送设置" 中,配置小米厂商参数:

  • 需要填写你在小米开放平台申请的 AppIDAppKeyAppSecret
  • 确保应用包名与小米开放平台注册时填写的包名完全一致

2. 必须使用云打包

配置好厂商参数后,一定要提交云打包,并且使用 "自有证书" 打签名包。将云打包后的安装包安装到手机上再获取 cid。

  • 不可使用自定义基座或标准基座方式获取 cid 进行离线厂商推送测试
  • 必须使用 release 签名包测试

3. 检查 manifest.json 配置

确保在 manifest.json"App模块配置" 中已勾选 "Push(消息推送)" 模块,并选择 "UniPush 2.0"

4. 代码调用时机

如果获取 cid 为空或失败,可能是客户端向推送服务器注册还未完成,可以使用 setTimeout 延时重试:

// #ifdef APP-PLUS || APP-HARMONY || mp-MP-WEIXIN  
uni.getPushClientId({  
    success: (res) => {  
        let push_clientid = res.cid;  
        console.log('客户端推送标识:', push_clientid);  
        if (!push_clientid) {  
            // 如果为空,延时重试  
            setTimeout(() => {  
                uni.getPushClientId({  
                    success: (res2) => {  
                        console.log('重试获取cid:', res2.cid);  
                    }  
                });  
            }, 3000);  
            return;  
        }  
        syncUserDeviceMap(push_clientid);  
    },  
    fail(err) {  
        console.log('获取客户端设备标识失败', err.errMsg);  
    }  
});  
// #endif

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

5. 其他检查项

  • 确保 HBuilderX 版本 ≥ 3.5.2(vue3 项目在 3.5.1 版本存在首次启动可能获取不到 cid 的问题)
  • 确认当前应用已开通 uni-push 2.0 服务
  • 确认客户端对应平台(Android)已启用 uni-push 2.0

更多信息可参考 uni.getPushClientId 文档uni-push 2.0 快速上手

内容为 AI 生成,仅供参考

要回复问题请先登录注册