uni-app unipush2的cid无法获取
uni-app unipush2的cid无法获取
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | Windows11 | HBuilderX |
测试过的手机
华为平板AGS3-AL00
操作步骤:
- 勾选unipush2,并已开通相关服务,重新打包自定义基座,调用 uni.getPushClientId方法
预期结果:
- 获取到cid
实际结果:
- 报错 getPushClientId:fail manifest.json->appid is required
bug描述:
无法获取到cid,报错信息{ “errMsg”: “getPushClientId:fail manifest.json->appid is required” } uni.getPushClientId({ success: (res) => { let push_clientid = res.cid console.log(‘客户端推送标识cid:’,push_clientid) }, fail(err) { console.log(err) } }) 但是我manifest中肯定是有appid的
3 回复
试了一下开通unipush1,重新打包了一下,unipush1能获取到cid,换回unipush2重新打包还是不行
只勾选在线推送的话和是否打包无关,点开manifest源码视图检查一下 push 相关配置,可以创建一个空项目,勾选 push2对比两个项目的manifest源码看看。
在使用 UniApp 的 UniPush2 时,如果无法获取到 cid
(Client ID),可能是由于以下几个原因导致的。你可以按照以下步骤进行排查和解决:
1. 检查 UniPush2 配置
- 确保在
manifest.json
中正确配置了 UniPush2 的相关信息,包括appid
、appkey
等。 - 确保在
manifest.json
中启用了 UniPush2 模块。
{
"app-plus": {
"distribute": {
"sdkConfigs": {
"push": {
"unipush": {
"appid": "your-appid",
"appkey": "your-appkey"
}
}
}
}
}
}
2. 检查设备网络
- 确保设备网络连接正常,UniPush2 需要网络连接才能获取
cid
。
3. 检查权限
- 确保应用已经获取了必要的权限,例如网络权限、通知权限等。
4. 检查代码逻辑
- 确保在代码中正确调用了获取
cid
的方法。通常可以通过plus.push.getClientInfo()
方法获取cid
。
plus.push.getClientInfo(function(info) {
console.log('CID:', info.clientid);
}, function(err) {
console.error('获取CID失败:', err);
});
5. 检查 UniPush2 服务状态
- 确保 UniPush2 服务正常运行,可以通过 UniPush2 控制台查看服务状态。
6. 检查设备兼容性
- 某些设备可能不支持 UniPush2,或者需要特定的系统版本。确保设备满足 UniPush2 的最低要求。
7. 检查日志
- 查看控制台日志,检查是否有错误信息或警告信息,这些信息可能有助于定位问题。
8. 更新 UniApp SDK
- 确保使用的是最新版本的 UniApp SDK,旧版本可能存在已知问题。
9. 联系技术支持
- 如果以上方法都无法解决问题,可以联系 UniApp 官方技术支持,提供详细的错误信息和日志,以便进一步排查。
示例代码
以下是一个完整的示例代码,用于获取 cid
:
document.addEventListener('plusready', function() {
plus.push.getClientInfo(function(info) {
console.log('CID:', info.clientid);
// 这里可以将 cid 发送到服务器
}, function(err) {
console.error('获取CID失败:', err);
});
});