GreatGoGoGo
GreatGoGoGo
  • 发布:2025-02-01 16:35
  • 更新:2025-02-01 20:56
  • 阅读:94

【报Bug】uni-push2.0 模块 nvue 模式 ios 平台切后台,长时间后再切回来 socket 不能重连,导致丢消息!!!

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 14.5 (23F79)

手机系统: iOS

手机系统版本号: iOS 16

手机厂商: 苹果

手机机型: iphone14

页面类型: nvue

vue版本: vue3

打包方式: 云端

项目创建方式: CLI

CLI版本号: 1.0.0

操作步骤:

1、nvue app,接入 uni-push 2.0,保证能正常收到 push 消息
2、把 app 切换到后台
3、超过 10 分支再切回来
4、此时用另一个账号另一个手机给这台手机的账号发消息,收不到 push

注意:
1、仅在 ios 平台有这个 bug,安卓没问题
2、如果是 5 分钟以内,切回来,ios 设备也没问题。超过 5 分钟(最好 10 分钟以上),就有这个 bug

预期结果:

切到后台后,等待长时间后(超过10分钟),app 切回来,依然能收到 push 消息

实际结果:

切到后台后,等待长时间后(超过10分钟),app 切回来,无法收到 push 消息

bug描述:

使用 uni-push 2.0,在 App.vue 页面的 onLaunch,打开 push 侦听:

    uni.offPushMessage(onPushMessage);  
    // 监听im消息  
    uni.onPushMessage(onPushMessage);

1、此时收发消息正常,push 也能收到。
2、切换到后台,再立马切回来,也能正常收发消息

下面操作,会导致收不到消息:

1、把 app 切换到后台
2、超过 10 分支再切回来(电脑终端,日志输出能看到:[GtPush] already connected __WARN)
3、此时用另一个账号另一个手机给这台手机的账号发消息,收不到 push

其它现象:

现象一:如果切到后台,等待的时间不长,比如三、四分钟,再切回来。还是正常的。
现象二:当不正常状态出现时,如果当时立刻切换到其它app,再切回来,就可恢复正常。
现象三:这个 bug 只在 ios 设备出现,安卓没有这个问题
现象三:用另一台 iphone11,ios14.4 版本,也是能复现此问题

这个 bug,能百分百复现

这个 bug,会导致丢消息,不解决,uni-push 根本不敢用,希望能重视

初步判断,这个 bug 的产生,是当应用从后台切换到前台时,GtPush 检查 connected 状态的逻辑有 bug,实际已经断开了,但认为没断开。
此时,再触发一次切到后台立马切到前台,就可以恢复正常。

2025-02-01 16:35 负责人:无 分享
已邀请:
m***@163.com

m***@163.com

你好

m***@163.com

要回复问题请先登录注册