用了uni-im,发送消息后一直无法推送,然后自己写了测试的推送函数,还是提示
{
"data": {
"uni-push-err-res": {
"errCode": "uni-push-user-invalid",
"errMsg": "推送失败,没有符合条件的消息接收者"
},
"create_time": 1677082758790,
"_id": "63f64086f5cf3ae5104f9686"
},
"errCode": 0
}

felixyan
- 发布:2023-02-23 04:39
- 更新:2024-07-08 22:53
- 阅读:968

我也遇到了同样的问题,但是通过查找源码解决了。说一下我的认识:应该是我们没有更新 uni-device 和 uni-id-device 这两张表。导致系统不能活动道 clientid和user_id之间的映射。所以可以在系统登录成功的时候,利用 uni-id-co 云对象的 setPushCid 方法传入 client_id;
const uniIdCo = uniCloud.importObject('uni-id-co');
uni.getPushClientId({
success: async res=>{
console.log(res);
console.log("设备的cid是", res.cid);
var pushClientId = res.cid;
console.log("尝试更新cid");
let result = await uniIdCo.setPushCid({
pushClientId
})
console.log(result);
}
})
通过这一个操作,你应该可以在数据库里面发现新添加的数据。这样就可以用了。
参考文献:麻烦大家看下官方文档,看完就知道怎么解决了。
https://doc.dcloud.net.cn/uniCloud/uni-cloud-push/mate.html
https://doc.dcloud.net.cn/uniCloud/uni-id/cloud-object.html#set-push-cid
felixyan (作者)
测试的2台设备都在device表里了。没问题呀。它自动添加的。
2023-02-23 16:39
DCloud_uniCloud_JSON
回复 felixyan: 另外检查看看是不是准备的token已经过期,或者check_token设置为false试试看
2023-02-23 17:46
2***@qq.com
使用 uni-id-co 的 setPushCid 方法
2024-07-08 22:54