接入uni-app uni-push2.0通知栏可以收到离线推送消息 华为点击通知栏消息可以唤醒app但是监听不到click事件 小米点击通知栏消息不会唤醒app已授权相关权限

接入uni-app uni-push2.0通知栏可以收到离线推送消息 华为点击通知栏消息可以唤醒app但是监听不到click事件 小米点击通知栏消息不会唤醒app已授权相关权限

15 回复

该bug反馈内容基本完整,但缺少关键代码示例,无法直接验证实现是否正确。复现步骤清晰但未提及设备特殊设置检查(如小米的"后台弹出界面"权限)。预期结果合理,实际结果符合部分厂商特性:小米问题常见于未开启后台弹出界面权限,华为能唤醒但监听不到click事件通常因监听代码未放在onLaunch生命周期中。分类信息完整,包含HBuilderX 4.76(低于当前稳定版4.85)及Android 15等关键版本信息。
经知识库比对,该问题不完全是框架bug:

小米设备需手动开启设置-应用管理-权限管理-后台弹出界面,用户称"已授权"但可能未正确配置
华为场景符合离线推送机制说明——点击通知唤醒后才可监听到消息,需确保uni.onPushMessage在onLaunch中注册
HBuilderX 4.76版本较旧,建议升级至最新正式版验证问题

核心问题在于:

未提供监听代码实现,无法判断是否按规范在onLaunch中注册
未确认小米设备是否完成厂商通道配置
离线推送需云打包后生效,标准基座无法测试 内容为 AI 生成,仅供参考

更多关于接入uni-app uni-push2.0通知栏可以收到离线推送消息 华为点击通知栏消息可以唤醒app但是监听不到click事件 小米点击通知栏消息不会唤醒app已授权相关权限的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni.onPushMessage代码瞅一眼

回复 d***@91jinrong.com: 用uni.onPushMessage试试

回复 套马杆的套子: uni.onPushMessage不行,才用的的这种方案

回复 d***@91jinrong.com: 先给hbx升级下,然后点完后没任何反应么?

回复 套马杆的套子: 是的,刚升级到4.8.7。还是没有效果

回复 d***@91jinrong.com: 我刚才也试了一下,也是红米,不过是k70 没问题呀,不过我是直接调用的云函数试的。你在线的有问题么?

回复 套马杆的套子: 我通过Dclound后台发送通知消息,配置Android离线配置:后续动作为启动应用之后就可以打开了。 我之前都是通过uni-admin后台推送的,就打不开应用。你可以下面评论我放的图。 但是我有个疑问,对于华为和小米,我想打开应用后拿到透传的消息,该怎么实现呢?

发送消息的两种方式


你直接用云函数试试吧,我没这么用过。云函数的方式不行的话我倒是可以帮到你

回复 套马杆的套子: 我找到问题了,很奇怪,我传递的payload中某个参数为一个以#结束的h5链接,就会有上面一系列问题,我把#删除掉就啥问题都没了,大佬能解释一下吗?

回复 d***@91jinrong.com: 这个问题确实存在,这个是个推的bug,很久前我提过,已经确认bug了,但是没能解决 你看下这个文章 https://ask.dcloud.net.cn/question/177029

回复 套马杆的套子: 好的

针对uni-push2.0的离线推送问题,建议如下:
华为设备监听不到click事件: 检查是否在App的onLaunch生命周期中正确注册了uni.onPushMessage监听,确保代码在收到推送前已执行。参考推送消息监听文档。
小米设备无法唤醒App: 需确认已开启小米设备的「后台弹出界面」权限(路径:设置 > 应用管理 > 对应应用 > 权限管理)。这是小米/OPPO/vivo等设备的常见限制。
其他注意事项:

必须使用云打包后的APK测试,标准基座不支持离线推送

若问题仍存在,建议检查厂商推送配置(如华为需单独配置回执)

来源参考:

uni-push2.0文档

厂商推送配置

内容为 AI 生成,仅供参考

问题分析:
你描述的华为设备能唤醒App但监听不到click事件,而小米设备无法唤醒App,这通常与厂商通道配置、推送消息的点击行为设置或事件监听逻辑有关。以下是可能的原因和解决方案:


1. 华为设备问题(能唤醒但无click事件)

  • 可能原因
    • 华为通道推送的消息中,click_action参数可能未正确配置为打开应用内特定页面,或未触发uni.onPushMessage监听。
    • 华为通道的click_action需设置为3(打开应用内页),并在intent中携带参数,否则可能仅唤醒App而不触发事件。
  • 检查步骤
    1. 在uni-push2.0后台,确认华为通道消息的click_action设置为打开应用内页面,并填写正确的intent(例如:#Intent;component=你的包名/io.dcloud.PandoraEntry;launchFlags=0x10000000;end)。
    2. 在App的App.vue中,确保已正确监听事件:
      // App启动时初始化监听
      onLaunch() {
          uni.onPushMessage((res) => {
              console.log('推送消息:', res); // 检查点击消息是否触发
              if (res.type === 'click') {
                  // 处理点击跳转逻辑
              }
          });
      }
      
    3. 华为设备需确认已集成华为推送SDK(在uni-app项目中勾选并配置manifest.json中的华为推送相关字段)。

2. 小米设备问题(无法唤醒App)

  • 可能原因
    • 小米通道未正确配置或权限未授权。
    • 小米设备对后台唤醒限制严格,需检查自启动、省电策略等设置。
  • 解决步骤
    1. 确认小米通道配置
      • 在uni-push2.0后台填写小米的AppIDAppKeyAppSecret
      • manifest.json中正确填写小米推送的配置(包名、权限等)。
    2. 检查设备权限
      • 进入小米设备的 设置 > 应用管理 > 你的App,确保开启自启动省电策略无限制通知管理权限
    3. 测试通道可用性
      • 在uni-push2.0后台选择“小米通道”发送测试消息,确认设备能否收到(可先测试在线推送)。
    4. 排查离线消息配置
      • 小米通道的离线消息需依赖厂商服务,确认设备已开启小米推送服务(系统设置中搜索“小米推送”)。

3. 通用排查建议

  • 日志调试
    uni.onPushMessageuni.getPushClientId中添加日志,检查回调是否触发。
  • 测试环境区分
    华为/小米设备需分别用对应通道推送测试,避免使用“全平台推送”混淆问题。
  • 基础配置检查
    1. manifest.json中已启用uni-push2.0并勾选华为、小米推送模块。
    2. 项目已打包正式版(自定义基座或云打包),调试基座可能无法触发厂商通道。

4. 关键配置示例(manifest.json)

"distribute": {
  "android": {
    "permissions": [
      "<uses-permission android:name=\"android.permission.INTERNET\"/>",
      "<uses-permission android:name=\"com.huawei.android.launcher.permission.CHANGE_BADGE\"/>"
    ],
    "plugins": [
      {
        "type": "push",
        "huawei": {
          "appid": "你的华为AppID"
        },
        "xiaomi": {
          "appid": "你的小米AppID",
          "appkey": "你的小米AppKey",
          "appsecret": "你的小米AppSecret"
        }
      }
    ]
  }
}
回到顶部