uni-app 离线推送 plus.push.addEventListener 没有执行

uni-app 离线推送 plus.push.addEventListener 没有执行

项目信息 详情
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 14.2.1
HBuilderX类型 正式
HBuilderX版本号 3.99
手机系统 Android
手机系统版本号 Android 14
手机厂商 华为
手机机型 p30
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

项目App.vue   
onLaunch() {  
plus.push.addEventListener(  
      "click",  
      (message) => {  
        console.log(123123113)  
        //处理点击消息的业务逻辑代码  
        console.log(msg, "msg")  
      },  
      false  
    )  

    uni.onPushMessage((res) => {  
      console.log("收到推送消息:", res) //监听推送消息  
    })  
}  

使App处于离线状态,发布离线消息推送,点击系统通知栏进入App

预期结果:

在线、离线点击都触发plus.push.addEventListener(
"click",
(message) => {
console.log(msg, "msg")
},
false
)

实际结果:

在线触发,离线没有触发plus.push.addEventListener(
"click",
(message) => {
console.log(msg, "msg")
},
false
)

bug描述:

注: 在uni-push2.0的问题交流群问了,工作人员说我步骤没有问题 


更多关于uni-app 离线推送 plus.push.addEventListener 没有执行的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

uni.onPushMessage 点击的时候触发了么?接收的时候出发了没 可以给你的云函数发出来看一眼

更多关于uni-app 离线推送 plus.push.addEventListener 没有执行的实战教程也可以访问 https://www.itying.com/category-93-b0.html


“use strict”

const uniPush = uniCloud.getPushManager({ appId: “…” }) //注意这里需要传入你的应用appId exports.main = async (event, context) => { let obj = JSON.parse(event.payload) console.log(obj, “obj”) return await uniPush.sendMessage({ push_clientid: obj.cids, //填写上一步在uni-app客户端获取到的客户端推送标识push_clientid force_notification: true, //填写true,客户端就会对在线消息自动创建“通知栏消息”。 title: obj.title, content: obj.content, payload: obj.data, options: { HW: { // 值为int 类型。1 表示华为测试消息,华为每个应用每日可发送该测试消息500条。此 target_user_type 参数请勿发布至线上。 “/message/android/target_user_type”: 1, }, VV: { //值为int 类型。0 表示正式推送;1 表示测试推送,不填默认为0。此 pushMode 参数请勿发布至线上。 “/pushMode”: 1, }, }, }) },uni.onPushMessage 在线的时候触发了,离线就没有触发

回复 2***@qq.com: 把这个注释掉再试试 force_notification: true, //填写true,客户端就会对在线消息自动创建“通知栏消息”。

回复 套马杆的套子: 注释了,还是拿不到

在使用 uni-app 进行离线推送时,plus.push.addEventListener 没有执行可能有多种原因。以下是一些常见的问题和解决方法:

1. 确保设备支持推送功能

  • 检查设备是否支持推送功能。某些设备或浏览器可能不支持推送通知。

2. 检查推送服务是否正确配置

  • 确保你已经正确配置了推送服务。例如,如果你使用的是第三方推送服务(如个推、极光推送等),确保你已经按照文档正确集成了 SDK 并配置了相关参数。

3. 检查 plus.push 是否初始化成功

  • 在使用 plus.push.addEventListener 之前,确保 plus.push 已经成功初始化。你可以在 plusready 事件中初始化推送服务。
document.addEventListener('plusready', function() {
    plus.push.addEventListener('click', function(msg) {
        console.log('推送消息被点击:', msg);
    }, false);
}, false);

4. 检查权限

  • 确保应用已经获得了推送通知的权限。你可以在设备的设置中检查应用的权限。

5. 检查回调函数的注册时机

  • 确保 plus.push.addEventListener 是在 plusready 事件之后调用的。如果 plus.push.addEventListenerplusready 之前调用,可能会导致回调函数没有正确注册。

6. 检查推送消息的格式

  • 确保你发送的推送消息格式正确。如果消息格式不正确,可能会导致 click 事件没有被触发。

7. 调试和日志

  • 在代码中添加调试日志,检查 plus.push.addEventListener 是否被调用,以及是否有错误信息输出。

8. 检查应用状态

  • 确保应用在前台或后台运行时能够接收到推送消息。有些推送服务可能在应用处于后台或关闭状态时无法触发 click 事件。

9. 检查推送服务的状态

  • 如果你使用的是第三方推送服务,确保推送服务正常运行,并且你发送的推送消息已经成功发送到设备。

10. 检查 uni-app 版本和插件版本

  • 确保你使用的 uni-app 版本和相关的推送插件版本是最新的,或者至少是兼容的。

示例代码

以下是一个简单的示例代码,展示如何在 plusready 事件中注册推送事件监听器:

document.addEventListener('plusready', function() {
    // 初始化推送服务
    plus.push.init({
        appid: 'your_appid',
        appkey: 'your_appkey',
        appsecret: 'your_appsecret'
    });

    // 注册推送消息点击事件
    plus.push.addEventListener('click', function(msg) {
        console.log('推送消息被点击:', msg);
        // 处理推送消息点击事件
    }, false);

    // 注册推送消息接收事件
    plus.push.addEventListener('receive', function(msg) {
        console.log('接收到推送消息:', msg);
        // 处理推送消息接收事件
    }, false);
}, false);
回到顶部