uni-app接入unipush2.0 离线打包后可以收到个推消息(app在线状态)(通知栏消息)但是点击消息进不了push回调事件

uni-app接入unipush2.0 离线打包后可以收到个推消息(app在线状态)(通知栏消息)但是点击消息进不了push回调事件

开发环境 版本号 项目创建方式
Windows windows11 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:windows11

HBuilderX类型:正式

HBuilderX版本号:4.75

手机系统:Android

手机系统版本号:Android 15

手机厂商:华为

手机机型:华为畅享60

页面类型:vue

vue版本:vue2

打包方式:离线

项目创建方式:HBuilderX

示例代码:

// 设备推送  
devicePush() {  
  // #ifdef APP-PLUS  
  plus.runtime.setBadgeNumber(0);  
  plus.push.addEventListener(  
    'click',  
     (res) => {  
      console.log('plus.push.addEventListener-click----', JSON.stringify(res))  
      uni.showToast({  
          title: 'click:' + JSON.stringify(res),  
          icon: 'none',  
      })  
      let path = `/pages/task/index`;  
        if (res.data.payload && res.data.payload.route) {  
          path = res.data.payload.route;  
        }  
        this.goPage(path);  
      },  
        false  
  );  
  plus.push.addEventListener(  
    'receive',  
     (res) => {  
      console.log('plus.push.addEventListener-receive----', JSON.stringify(res))  
      uni.showToast({  
          title: 'receive:' + JSON.stringify(res),  
          icon: 'none',  
      })  
      let path = `/pages/task/index`;  
      if (res.data.payload && res.data.payload.route) {  
        path = res.data.payload.route;  
      }  
      this.goPage(path);  
    },  
    false  
  );  
  uni.onPush(res => {  
    console.log('uni.onPush收到推送消息onPush:---', JSON.stringify(res))  
    uni.showToast({  
        title: '收到推送消息onPush:' + JSON.stringify(res),  
        icon: 'none',  
    })  
    if (res.type === 'receive') {  
      // 前台收到消息  
      console.log('应用在前台接收到推送:', res.data);  
    } else if (res.type === 'click') {  
      // 用户点击通知栏  
      console.log('用户点击了通知栏:', res.data);  
    }  
  });  
  uni.onPushMessage(res => {  
    console.log('uni.onPushMessage收到推送消息onPushMessage:---', JSON.stringify(res))  
  uni.showToast({  
      title: '收到推送消息onPushMessage:' + JSON.stringify(res),  
      icon: 'none',  
  })  
      let path = `/pages/task/index`;  
      if (res.data.payload && res.data.payload.route) {  
        path = res.data.payload.route;  
      }  
      this.goPage(path);  
    });  
  // #endif  
}
`

更多关于uni-app接入unipush2.0 离线打包后可以收到个推消息(app在线状态)(通知栏消息)但是点击消息进不了push回调事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html

14 回复

你是离线消息还是透传

更多关于uni-app接入unipush2.0 离线打包后可以收到个推消息(app在线状态)(通知栏消息)但是点击消息进不了push回调事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html


你好, 是透传,在线消息

回复 i***@fjskec.com: 透传 force_notification ?

回复 DCloud_Android_THB: 有的,在云函数里面的推送方法有传参

// 发送消息 最大一次推送数据为500 async function sendMessage(obj) { const res = await uniPush.sendMessage({ // “push_clientid”: obj.cids, // 设备id,支持多个以数组的形式指定多个设备,如[“cid-1”,“cid-2”],数组长度不大于1000 “getui_alias”: obj.deviceData.getuiAlias, // 个推自定义客户端别名,指定消息接收者。支持多个以数组的形式指定多个设备,如[“getui_alias-1”,“getui_alias-2”],数组长度不大于1000 “title”: obj.deviceData.title, // 标题 “content”: obj.deviceData.content, // 内容 “payload”: obj.deviceData.payload, // 数据 “force_notification”: true, // 服务端推送 需要加这一句 “request_id”: obj.deviceData.requestId, //请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失 “options”: { // 额外选项,例如设置透传消息 // 透传消息内容(可选),如果设置,则会在应用前台时直接收到此消息(触发receive事件) “transmission”: { “transmission_type”: true, // 是否启用透传 “transmission_content”: obj.deviceData.payload // 可以是字符串或对象(需JSON.stringify) } } }) return res //一定要return回去 }

回复 i***@fjskec.com: 麻烦发下appid,我看看你的配置

回复 DCloud_Android_THB: “UNI80EA941” “UNI”前后分别有两个下划线“__”

回复 i***@fjskec.com: 你再打一次包,我这搜不到你的打包记录

回复 DCloud_Android_THB: 好的。已打包,我打包方式为:发行-》 App-android/ios-本地打包

回复 i***@fjskec.com: 你得云打包啊,要不我怎么能在后台看到?

回复 DCloud_Android_THB: 好的,已云打包

回复 i***@fjskec.com: 还是没查到, 你再打一次 im联系我也行

这个是appId截图

在uni-app离线打包场景下,点击推送消息无法触发回调事件通常与以下因素相关:

  1. 推送消息格式问题
    离线打包时,推送消息需包含payload字段且格式正确。检查个推后台推送配置,确保消息体包含完整的payload数据:

    {
      "title": "通知标题",
      "content": "内容",
      "payload": {
        "route": "/pages/task/index"
      }
    }
    
  2. 应用生命周期状态
    应用被杀死后点击通知,需通过app.vueonLaunch中处理冷启动参数:

    export default {
      onLaunch: function(options) {
        if (options.plus) {
          const pushMsg = options.plus.pushMessage;
          if (pushMsg) {
            // 处理点击通知冷启动逻辑
            this.handlePushClick(pushMsg);
          }
        }
      }
    }
    
  3. 事件监听时机
    确保推送事件监听在应用初始化时执行。建议在App.vueonShow中统一注册:

    onShow() {
      plus.push.addEventListener('click', (msg) => {
        console.log('点击事件触发:', msg);
        // 跳转逻辑
      });
    }
    
  4. 离线打包配置验证
    检查原生工程中UniPush SDK配置:

    • Android需确认UniPushMessageReceiver在Manifest中正确注册
    • 确保个推AppID/AppKey/AppSecret与云端一致
  5. 调试方案
    app.vue中添加全局日志捕获:

    // 检测启动参数
    console.log('应用启动参数:', JSON.stringify(plus.runtime.arguments));
回到顶部