亿企查
亿企查
  • 发布:2025-12-04 15:14
  • 更新:2025-12-08 17:08
  • 阅读:172

【报Bug】鸿蒙无法接收来自uniPush.sendMessage推送的消息

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11专业版 24H2

HBuilderX类型: 正式

HBuilderX版本号: 4.85

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 5.0.5

手机厂商: 华为

手机机型: Mate 60

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

return await uniPush.sendMessage({
"push_clientid": "ea948eb479cf7afafcb783eb1786b9bc", //填写上一步在uni-app客户端获取到的客户端推送标识push_clientid
"force_notification": true, //填写true,客户端就会对在线消息自动创建“通知栏消息”。
"title": "消息通知",
"content": "555555555555555",
"payload": '',
"badge": 1,
"category": {
"harmony": "SUBSCRIPTION",
"huawei": "SUBSCRIPTION",
"vivo": "SUBSCRIPTION"
}
})

操作步骤:

sendMessage

预期结果:

推送成功

实际结果:

推送失败

bug描述:

在推送平台能推送,使用uniPush.sendMessage无法推送,uniPush.sendMessage返回结果
{
"data": {
"RASS_1204_3d4fbd920ee057b87fccfca284891479": {
"ea948eb479cf7afafcb783eb1786b9bc": "successed_online"
}
},
"errCode": 0,
"errMsg": "success"
}

2025-12-04 15:14 负责人:DCloud_uniCloud_JSON 分享
已邀请:
Ask小助手

Ask小助手

根据您描述的问题和提供的环境信息,结合知识库内容分析如下:

鸿蒙平台从HBuilderX 4.31开始支持uniPush推送(您当前使用4.85符合要求),但华为设备需要特别注意以下配置:

  1. 华为推送服务配置:请确认已在华为开发者后台开通推送服务,并正确配置了SHA256指纹证书

  2. 关键文件缺失:华为厂商必须上传agconnect-services.json文件到uni-app后台的【uni-push/1.0/消息推送】-【配置管理】中,且包名需与客户端完全一致

  3. 客户端监听逻辑:确保在onLaunch中正确注册了推送消息监听:

    uni.onPushMessage((res) => {  
    console.log("收到推送消息:", res);  
    });
  4. 离线推送验证:在uni-push后台【故障排查】-【状态查询】中输入CID,检查是否返回了devicetoken。若未返回,说明厂商集成未成功

  5. 证书问题:云打包必须使用自有证书打正式签名包(debug包无法测试离线推送)

特别注意:鸿蒙平台不支持app-plus相关API,所有推送配置必须按照uniPush 2.0文档进行设置。建议重新检查华为厂商配置并确保agconnect-services.json文件正确上传后重新云打包测试。

内容为 AI 生成,仅供参考
亿企查

亿企查 (作者)

1、已开通推送服务 2、json已经配置 3、必须注册推送消息监听吗?我没注册,我只要能推送到手机就行 4、查询中返回了devicetoken 5、我真机运行的在uni-push后台推送能收到,但是使用sendMessage推送无法收到

DCloud_uniCloud_JSON

DCloud_uniCloud_JSON

你混淆了概念,看下 uni-push 入门文档中的名词解释
注:force_notification 仅支持 iOS Android,鸿蒙暂不支持。

  • 亿企查 (作者)

    通知栏未收到

    2025-12-08 16:16

  • 亿企查 (作者)

    就是APP这边是同样的状态不论在前台还是后台(去除force_notification因素)都是uni-push后台推送能收到,使用sendMessage推送无法收到

    2025-12-08 16:19

亿企查

亿企查 (作者)

鸿蒙平台必须在APP.vue中的onLaunch中uni.onPushMessage接收推送消息才能收到通知栏推送,iOS、Android无需接收也能收到通知栏推送

  • DCloud_uniCloud_JSON

    是的。请仔细阅读文档按流程一步一步骤走,你说的这一点在:uni-push 入门文档 - 客户端监听推送消息

    2025-12-08 20:02

  • 亿企查 (作者)

    回复 DCloud_uniCloud_JSON: 文档中也未说明必须在onLaunch中注册uni.onPushMessage才能接收通知栏推送,而且在uni-push后台推送能收到,在我理解这完全就是个坑,另外iOS中uniPush.sendMessage推送中字段不能含有unll,一旦某个字段传参为空iOS在线推送就会导致app闪退,这种坑也没有说明

    2025-12-10 08:36

  • DCloud_uniCloud_JSON

    回复 亿企查: 1. 不写“必须”,用词“应当”表示存在例外情况,这建立在你对 uni-push 和应用生命周期的深入理解。文档原文:“监听推送消息的代码,需要在收到推送消息之前被执行。所以应当写在应用一启动就会触发的应用生命周期onLaunch中。”



    1. 你哪个字段传 null 引起闪退了?

    2025-12-10 17:23

  • 亿企查 (作者)

    回复 DCloud_uniCloud_JSON: 我有深入理解了我还需要看文档?

    2025-12-16 09:25

要回复问题请先登录注册