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

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

开发环境 版本号 项目创建方式
Mac 14.5 CLI

产品分类:uniapp/App

PC开发环境操作系统:Mac

手机系统:iOS

手机系统版本号:iOS 16

手机厂商:苹果

手机机型:iphone14

页面类型:nvue

vue版本:vue3

打包方式:云端

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);

更多关于uni-app uni-push2.0 模块 nvue 模式 ios 平台切后台,长时间后再切回来 socket 不能重连,导致丢消息的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

你好

更多关于uni-app uni-push2.0 模块 nvue 模式 ios 平台切后台,长时间后再切回来 socket 不能重连,导致丢消息的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在的?

这是一个iOS平台下uni-push2.0在nvue模式下的后台重连问题。根据描述,当App进入后台超过10分钟后,Socket连接断开且无法自动重连。

iOS系统对后台运行的App有严格限制,超过一定时间(通常5-10分钟)会冻结网络连接。建议在App从后台返回前台时(监听onShow生命周期),手动触发一次uni-push的重连机制:

// App.vue
onShow() {
  // 重新初始化push连接
  uni.offPushMessage(onPushMessage);
  uni.onPushMessage(onPushMessage);
  
  // 也可以尝试调用一次getProvider检查状态
  uni.getPushProvider({
    success: (res) => {
      console.log('Push provider:', res);
    }
  });
}

同时确保在manifest.json中配置了后台运行权限:

"ios": {
  "UIBackgroundModes": ["remote-notification"]
}
回到顶部