HarmonyOS鸿蒙Next中push kit推送收不到消息

HarmonyOS鸿蒙Next中push kit推送收不到消息 【问题描述】:使用的push kit,把demo的包名和签名都改成自己的应用也是收不到推送消息,后台是开通了推送功能的,包名一致,签名是AGC上申请的debug profile,token没有变更启动几次都是一个token

【问题现象】:签名文件也是推送能力开通之后生成的,因为推送能力是安卓包就已经开通了,创建鸿蒙应用的时候,生成签名文件时候就已经是开通之后生成的签名文件了

【版本信息】:nova 14 6.0.0.115

【复现代码】:NA

【尝试解决方案】:NA

5 回复

按以下步骤进行排查试试:

  • 通知授权:可通过requestEnableNotification的错误码判断用户是否授权。若返回的错误码为1600004,即为拒绝授权。示例代码参考:开发步骤

  • 消息类型和配置:确认发送的消息类型和配置是否正确。例如,需要设置合适的category和push-type来确保消息被正确处理。同时,检查testMessage是否被设置为true,这是因为测试消息有特定的发送限制:当testMessage为true时,单个项目最多可推送1000条测试消息,每次推送携带Token数不超过10个。推送授权订阅消息与卡片刷新消息时,每次仅能携带一个Token。若未申请通知消息自分类权益,则推送的通知消息默认为资讯营销类(category取值为MARKETING)消息;若仅需发送资讯营销类消息,则无需申请通知消息自分类权益。

  • PushToken:确认应用已经成功获取并上传了PushToken。PushToken标识了每台设备上每个应用,开发者调用getToken()接口向PushKit服务端请求PushToken,获取到之后使用PushToken来推送消息。PushToken一般情况不会变化,仅下列场景Push Token会发生变化:

    • 卸载应用后重新安装。
    • 设备恢复出厂设置。
    • 应用显式调用deleteToken()接口后重新调用getToken()接口。
    • 应用显式调用deleteAAID()接口后重新调用getToken()接口。
    • 将设备(仅涉及Wearable设备)拿到海外其他国家或者地区后,系统会更新设备的Token。更新后的Token通过pushService.on(‘tokenUpdate’)接口的回调返回。

    因此,建议在应用启动时调用getToken()接口,若设备的PushToken发生变化,及时上报到应用服务器更新PushToken。示例代码参考:Push Token更新回调

  • module.json5文件的配置问题:module.json5文件中的skills标签下可以同时存在多个skill对象,每个对象对应一种能力。如果需要同时设置推送消息跳转能力和其他跳转能力(如NFC跳转、浏览器跳转等),需要在skills数组中创建不同的skill对象,分别映射对应的能力。一个skill中不建议配置多个action,否则会导致无法匹配预期场景。

更多关于HarmonyOS鸿蒙Next中push kit推送收不到消息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


通过agc后台推送的?,

在HarmonyOS Next中,推送消息接收失败可能由以下原因导致:

  1. 未正确配置推送证书或签名信息。
  2. 应用未获得通知权限或后台运行权限。
  3. 设备网络连接异常或处于省电模式。
  4. 推送服务未在设备上正常启动。
  5. 使用了不兼容的Push Kit SDK版本。

根据你的描述,问题很可能出在签名文件与AGC(AppGallery Connect)上配置的签名证书指纹不匹配,这是Push Kit在HarmonyOS Next上最常见的配置问题。

以下是核心排查步骤,请按顺序检查:

  1. 确认HarmonyOS签名证书的SHA256指纹

    • 打开你的HarmonyOS应用工程。
    • 找到并打开 signingConfigs 相关的配置文件(通常是 build-profile.json5module.json5 中的 “signingConfig” 字段引用的 .p7b 文件)。
    • 你需要获取用于调试(debug)或发布(release)的签名证书的SHA256指纹。这个指纹必须与AGC上配置的完全一致。
  2. 在AGC上核对并配置正确的证书指纹

    • 登录 AppGallery Connect
    • 进入你的项目 > 选择你的HarmonyOS应用。
    • 进入 “我的项目” > “项目设置” > “常规” 页面。
    • “SHA256证书指纹” 部分,确保你添加的指纹是上一步从HarmonyOS应用签名文件中获取的SHA256指纹,而不是之前Android应用的指纹。如果已存在旧指纹,请先删除,再添加正确的HarmonyOS签名指纹。
    • 重要:HarmonyOS应用和之前的Android应用在AGC上是两个不同的应用,即使包名相同,其签名配置也是独立的。你必须为这个HarmonyOS应用单独配置其签名指纹。
  3. 检查AGC上的Push Kit开关与配置

    • 在AGC中,进入你的HarmonyOS应用。
    • 进入 “增长” > “推送服务”
    • 确保Push Kit服务是开启状态。
    • “应用” 标签页下,确认 “包名” 与你HarmonyOS应用的包名完全一致。
  4. 在设备上检查通知权限

    • 在运行应用的HarmonyOS Next设备上,进入 “设置” > “通知和状态栏” > “应用通知”
    • 找到你的应用,确保 “允许通知” 开关是打开状态。
  5. 验证Token获取

    • 你提到Token能正常获取且不变,这初步说明SDK集成和基础配置是没问题的。Token是Push服务端向设备推送消息的地址凭证,能获取到通常意味着客户端SDK与HMSCore(HarmonyOS上的基础服务)通信正常。

总结与关键点: 问题焦点极大概率在于 AGC中配置的“SHA256证书指纹”并非当前HarmonyOS Next应用实际使用的签名文件的指纹。HarmonyOS Next使用独立的签名体系,必须将正确的指纹录入对应HarmonyOS应用的AGC配置中,推送消息才能通过签名校验并成功下发。

请优先完成第1、2步的核对与修正,这通常能解决此类推送收不到的问题。修正AGC配置后,可能需要等待一小段时间(通常几分钟)让配置生效,然后重新安装应用并测试推送。

回到顶部