应用原先属于账号A,后来已转让给账号B。现在账号B下已绑定当前应用对应的 uniCloud 服务空间,账号A下已无可用云空间。
当前现象:
- 在 DCloud 开发者中心后台,Uni Push 按同一个 CID 手工推送成功。
- 但在账号B当前服务空间内,通过云函数调用 uniCloud.getPushManager().sendMessage() 按同一个 CID 推送失败,返回:
errCode: uni-push-user-invalid
errMsg: 推送失败,没有符合条件的消息接收者
已确认:
- 正式 iOS 包(TestFlight),不是调试基座
- 同一 CID 在故障排查中状态正常
- 包名、appid、device token、通知权限都正常
- opendb-device 表中已有对应 push_clientid 记录
- 云函数 URL 化、token、uni-cloud-push 扩展库、依赖表都已配置完成
- 同一个 CID,控制台手工推送成功,但云函数 API 推送失败
怀疑与应用转让后,uni-push API 发送侧的应用归属 / 服务空间绑定 / 推送映射迁移不完整有关。
{
"errCode": "uni-push-user-invalid",
"errMsg": "推送失败,没有符合条件的消息接收者"
}
希望协助确认:
- 应用转让后,控制台推送和 getPushManager API 推送是否可能仍引用不同归属关系
- 当前账号B下该应用与服务空间、推送通道、CID 映射是否完整一致
- 是否存在应用转让后 API 推送侧残留历史映射的问题
3 个回复
z***@163.com (作者)
后台发送通知和透传都是正常的 api调用就说找不到接收者
Ask小助手
抱歉,我在知识库中没有找到关于应用转让后控制台推送成功但 API 推送返回 uni-push-user-invalid 的直接相关技术文档。
知识库中暂未涵盖应用从账号 A 转让到账号 B 后,uni-push 服务空间绑定关系、CID 映射迁移等特定场景的技术细节。
建议的排查方向(基于知识库中推送映射的通用逻辑)
虽然知识库中没有应用转让的特定解决方案,但您可以参考以下推送用户无效的通用排查逻辑:
检查 opendb-device 表数据一致性
根据对话知识库中的信息,推送依赖于
opendb-device、uni-id-device等映射表。应用转让后,建议检查这些表中push_clientid与当前服务空间、appid 的关联是否正确,是否存在残留的历史账号 A 的映射关系。确认 push_clientid 有效性
对话知识库中提到:push_clientid 如果 3 个月未登录会失效。虽然您提到是正式包且 CID 状态正常,但应用转让后建议让客户端重新获取一次 clientid 并更新到设备表。
服务空间绑定关系
优先知识库中提到空间所有权不能直接转让。虽然应用已转让,但建议确认当前账号 B 下的服务空间是否已完全接管该应用的推送配置,特别是
uni-cloud-push扩展库中的服务空间 ID 配置是否指向了账号 B 的正确空间。建议的解决途径
由于该问题涉及应用转让后的后台数据迁移完整性,建议您:
知识库中暂未找到关于应用转让后 API 推送侧残留历史映射的处理方案,无法提供更具体的技术解答。
z***@163.com (作者)
为了排除业务代码影响,我新建了一个最小测试云函数 push-direct-test,
不经过任何 Java 服务端或中转逻辑,直接在当前 uniCloud 服务空间内调用:
uniCloud.getPushManager({ appId: 'UNIB4F15AA' }).sendMessage({
push_clientid: ['fccd7b3095d8207df1c58e152eac91cd'],
platform: ['app-ios', 'app-android'],
title: 'direct test',
content: 'direct test message',
force_notification: true
})
云端运行结果仍然返回:
{
"code": 200,
"success": true,
"data": {
"errCode": "uni-push-user-invalid",
"errMsg": "推送失败,没有符合条件的消息接收者"
}
}
这说明问题与业务代码无关,已可复现为当前服务空间内 uni-push API 直接发送失败,
而同一 CID 在 DCloud 控制台手工推送成功。
要回复问题请先登录或注册
公告
更多>相关问题