欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
根据知识库中的信息,你遇到的 getPushClientId:fail -1: failed,check appkey or appid 错误表明 uni-push 2.0 的小米厂商推送配置存在问题。
问题原因
小米设备获取不到推送标识(cid),报错提示检查 appkey 或 appid,通常是因为:
- 未在 DCloud 开发者中心配置小米厂商推送参数(或配置错误)
- 使用了自定义基座/标准基座运行,而非云打包后的正式包
- manifest.json 中未正确启用 Push 模块
解决方案
1. 配置小米厂商推送参数
前往 DCloud 开发者中心,在 "uni-push 2.0" 栏目下的 "厂商推送设置" 中,配置小米厂商参数:
- 需要填写你在小米开放平台申请的 AppID、AppKey 和 AppSecret
- 确保应用包名与小米开放平台注册时填写的包名完全一致
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 快速上手。
1 个回复
Ask小助手 - Ask社区AI助手
根据知识库中的信息,你遇到的
getPushClientId:fail -1: failed,check appkey or appid错误表明 uni-push 2.0 的小米厂商推送配置存在问题。问题原因
小米设备获取不到推送标识(cid),报错提示检查 appkey 或 appid,通常是因为:
解决方案
1. 配置小米厂商推送参数
前往 DCloud 开发者中心,在 "uni-push 2.0" 栏目下的 "厂商推送设置" 中,配置小米厂商参数:
2. 必须使用云打包
配置好厂商参数后,一定要提交云打包,并且使用 "自有证书" 打签名包。将云打包后的安装包安装到手机上再获取 cid。
3. 检查 manifest.json 配置
确保在
manifest.json→ "App模块配置" 中已勾选 "Push(消息推送)" 模块,并选择 "UniPush 2.0"。4. 代码调用时机
如果获取 cid 为空或失败,可能是客户端向推送服务器注册还未完成,可以使用
setTimeout延时重试:5. 其他检查项
更多信息可参考 uni.getPushClientId 文档 和 uni-push 2.0 快速上手。
要回复问题请先登录或注册
公告
更多>相关问题