1***@qq.com
1***@qq.com
  • 发布:2025-02-14 17:40
  • 更新:2025-02-17 11:44
  • 阅读:227

【报Bug】杀掉应用后,发送一条消息通知后,fcm拉起进程在线后,再发送通知,uni.onPushMessage监听不到透传消息,打开应用后又可以

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 专业版

HBuilderX类型: 正式

HBuilderX版本号: 4.36

手机系统: Android

手机系统版本号: Android 10

手机厂商: 三星

手机机型: Galaxy Note9,型号:SM-N960U1

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

APP.vue中代码如下:

onLaunch: function() {  
            console.log('App Launch');  

            // #ifdef APP-PLUS  

            console.log('11111111111111');  
            // 获取当前应用的cid  
            plus.push.getClientInfoAsync((info) => {  
                console.log('------------getClientInfoAsync---------');  
                console.log(info);  
            });  

            // 获取客户端唯一的推送标识  
            getPushClientIdWithRetry();  

            // 设置接收透传消息的监听器  
            uni.onPushMessage(function(result) {  
                console.log('收到推送消息:', result);  

                const { type, data } = result;  
                const { payload } = data;  
                const { definedTitle: title, definedContent: content } = payload;  

                if (type === 'receive') {  
                    // 应用从推送服务器接收到推送消息事件  
                    uni.createPushMessage({  
                        title,  
                        content,  
                        payload,  
                        success(a, b, c) {  
                            console.log('createPushMessage success', a, b, c);  
                        },  
                        fail(a, b, c) {  
                            console.log('createPushMessage fail', a, b, c);  
                        }  
                    })  
                }  
            });  
            // #endif  
        }

操作步骤:

1,上滑杀掉app应用
2,后台发送一条消息通知
3,手机顶部收到一条通知
4,此时故障排查中,查看该应用的cid,显示在线(应该是fcm拉起进程在线)
5,后台再次发送消息通知,手机顶部收不到通知信息,uni.onPushMessage没有监听到消息通知
6,打开app应用后,uni.onPushMessage监听到消息通知

预期结果:

fcm拉起app进程在线后,后台再次发送通知,uni.onPushMessage应该要能继续监听到消息

实际结果:

fcm拉起app进程在线后,后台再次发送通知,uni.onPushMessage没有监听到消息,而是打开app后才监听到。
这样导致后续发送通知时,手机收不到通知消息的现象。
这个问题对于消息通知来说,比较严重,麻烦给予技术支持,非常感谢。

bug描述:

fcm消息推送,已开通unipush1.0推送服务,相关配置已设置,使用自定义基座进行调试。
问题:杀掉app应用后,发送一条消息通知后,此时通知栏收到一条消息后,fcm拉起进程在线,再次发送通知,app应用监听不到透传消息,打开app应用后又可以

2025-02-14 17:40 负责人:DCloud_Android_THB 分享
已邀请:
DCloud_Android_THB

DCloud_Android_THB

fcm拉起进程,但是js线程并没有启动,所以会缓存收到的消息,等到app打开的时候再释放消息,此时你可以获取到缓存的消息。

  • 1***@qq.com (作者)

    fcm拉起进程,js线程并没有启动,此时怎么能继续监听到透传消息并创建本地通知?

    2025-02-17 14:22

  • DCloud_Android_THB

    回复 1***@qq.com: 如上所述,会缓存后续的透传消息,直到你的注册监听代码运行。

    2025-02-19 12:28

  • 1***@qq.com (作者)

    回复 DCloud_Android_THB: fcm拉起进程,设备在线时,不是应该uniapp底层拉起js线程启动吗?不然我怎么能保持uni.onPushMessage监听代码一直运行呢?js线程不启动的话,手机顶部就不能及时收到消息通知呀,得打开才能收到。

    2025-02-24 17:15

  • DCloud_Android_THB

    回复 1***@qq.com: 对 就是要打开app,此时onPushMessage里面处理。

    2025-02-24 18:47

  • 1***@qq.com (作者)

    回复 DCloud_Android_THB: 那这样的话,我不打开app的话,后面来的新消息通知就不能及时收到了,感觉这样不合理呢,应该fcm拉起进程,设备在线时,uniapp应该拉起app的js线程启动,这样通过监听onPushMessage来创建消息createPushMessage,才能及时收到新的消息通知。

    2025-02-25 10:40

  • DCloud_Android_THB

    回复 1***@qq.com: 我明白你的意思了,这个我们需要讨论一下,先讲下这个问题,fcm拉起进程,进程虽然启动了,但是js线程在后台是不运行的,导致新消息只在原生层...

    2025-02-25 17:39

  • 1***@qq.com (作者)

    回复 DCloud_Android_THB: 是的,这个问题对于杀掉应用后,需要及时收到重要消息的APP来说很重要。麻烦你们能尽快解决一下这个问题呢,顺便看下国内各厂商的消息推送是不是也存在这个类似问题。如果你们解决了,麻烦通知一下,非常感谢。

    2025-02-26 14:37

  • DCloud_Android_THB

    回复 1***@qq.com: 国内的不存在此问题

    2025-02-26 16:37

  • 1***@qq.com (作者)

    回复 DCloud_Android_THB: 你好,请问这个问题什么时候能解决,我这边海外项目着急要用,暂时有没有其他快捷的方式来解决?

    2025-03-04 09:49

要回复问题请先登录注册