uni-app unipush2.0 离线通知点击事件无法被监听到

uni-app unipush2.0 离线通知点击事件无法被监听到

示例代码:

uni.onPushMessage((res) => {  
    console.log('收到推送消息:', res) //监听推送消息  
    uni.createPushMessage(res.data)  
    if(res.type=='click'){  
        console.log('点击了推送',res)    //离线推送点击后,这里不会被执行  
    }  

})  

plus.push.addEventListener("click", function(msg) {  
    console.log("点击了推送消息:",msg)    //离线推送点击后,这里不会被执行  
})

操作步骤:

  • 点击离线通知

预期结果:

  • 点击离线通知后,能够监听到点击事件

实际结果:

  • 点击离线通知后,无法监听到点击事件

bug描述:

离线通知能够接收到,点击后会打开应用首页,但是点击事件无法被监听到,无论是plus.push.addEventListener("click",function(){},false),还是在uni.onPushMessage中监听res.type=='click'都无法监听到离线推送的点击事件。在线推送可以正常监听到点击事件


更多关于uni-app unipush2.0 离线通知点击事件无法被监听到的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

看一眼你服务器端推送的uniPush.sendMessage代码

更多关于uni-app unipush2.0 离线通知点击事件无法被监听到的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我解决了,是因为我在onLaunch中有几个await的异步请求放在了uni.onPushMessage的前面,导致onPushMessage执行的时候,App已经启动了几秒甚至十几秒了,onPushMessage已经监听不到click事件了,把onPushMessage放在await请求前面就可以了。

在使用 Uni-App 的 UniPush 2.0 时,如果你发现离线通知的点击事件无法被监听,可能是由于以下几个原因导致的。下面是一些常见的排查步骤和解决方案:

1. 确认推送配置

  • 确保你已经在 UniPush 2.0 后台正确配置了推送证书(iOS)和推送服务(Android)。
  • 确保你的应用在前台和后台都能正常接收推送通知。

2. 监听点击事件

在 Uni-App 中,你可以通过 plus.push.addEventListener 来监听推送通知的点击事件。确保你在应用的入口文件(如 App.vue)中正确添加了事件监听器。

export default {
    onLaunch: function() {
        // 监听推送通知点击事件
        plus.push.addEventListener('click', function(msg) {
            console.log('通知被点击了:', msg);
            // 在这里处理通知点击后的逻辑
        }, false);
    }
}

3. 检查离线通知

  • iOS: 确保你的应用在后台或关闭时能够接收到推送通知。iOS 的离线通知通常由 APNs 直接处理,你需要确保推送的 payload 正确。
  • Android: 确保你的应用在后台或关闭时能够接收到推送通知。Android 的离线通知通常由厂商通道处理,你需要确保厂商通道配置正确。

4. 检查推送内容

确保推送的内容中包含了必要的字段,特别是 payload 字段。payload 字段可以在通知点击时传递到应用。

{
    "title": "测试通知",
    "content": "这是一个测试通知",
    "payload": {
        "key1": "value1",
        "key2": "value2"
    }
}
回到顶部