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
操作步骤:
- nvue app,接入 uni-push 2.0,保证能正常收到 push 消息
- 把 app 切换到后台
- 超过 10 分支再切回来
- 此时用另一个账号另一个手机给这台手机的账号发消息,收不到 push
注意:
- 仅在 ios 平台有这个 bug,安卓没问题
- 如果是 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 回复
在的?
1
这是一个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"]
}