uni-app ios app.vue onHide 问题

uni-app ios app.vue onHide 问题

产品分类:

uniapp/App

PC开发环境操作系统:

Mac

PC开发环境操作系统版本号:

10.15.7

HBuilderX类型:

正式

HBuilderX版本号:

3.2.16

手机系统:

iOS

手机系统版本号:

iOS 14

手机厂商:

苹果

手机机型:

11

页面类型:

vue

vue版本:

vue2

打包方式:

云端

项目创建方式:

HBuilderX

示例代码:

onShow: function() {  
    console.log('App Show')  
    uni.setStorageSync('result','我进来了')  
},  
onHide: function() {  
    console.log('App Hide')  
    console.log(uni.getStorageSync('result'))  
}

操作步骤:

在app.vue 里面 在onShow本地储存一个字段后,当ios 强制杀掉进程 可以监听到onHide 事件,但是,我想清除本地 储存,或者打印储存的值 不执。(实际在项目上任何方法都不执行)

预期结果:

在app.vue 里面 在onShow本地储存一个字段后,当ios 强制杀掉进程 可以监听到onHide 事件,项目上任何方法可以执行

实际结果:

在app.vue 里面 在onShow本地储存一个字段后,当ios 强制杀掉进程 可以监听到onHide 事件,但是,我想清除本地 储存,或者打印储存的值 不执。(实际在项目上任何方法都不执行)

bug描述:

在app.vue 里面 在onShow本地储存一个字段后,当ios 强制杀掉进程 可以监听到onHide 事件,但是,我想清除本地 储存,或者打印储存的值 不执。(实际在项目上任何方法都不执行)


更多关于uni-app ios app.vue onHide 问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

安卓的没问题

更多关于uni-app ios app.vue onHide 问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


未复现问题,测试可以正常打印存储的值

我这里是可以复现的,而且是多次出现这种情况,我新建一个项目,啥都没有,多试几次,是必现的,是杀进程不是进入后台

回复 宽: 新建空项目测试也这样?请提供下示例(上传附件)

回复 DCloud_UNI_Anne: 已上传

已上传

需要注意:如果操作特别快杀死app进程, onHide 事件是有可能来不及触发的,建议你换个处理方式吧

能给个建议吗?我想记录用户在线时长,有什么好的方法处理吗?

回复 宽: 集成三方的统计,比如友盟统计,如果非要自己实现的话,最简单的方式弄个定时器10秒存一下,下次启动的时候提交上一次的数据,类似这种吧

回复 DCloud_iOS_XHY: 好的 感谢

这是iOS系统限制导致的问题。当应用被强制终止时,iOS会限制应用的执行时间,导致onHide中的异步操作无法完成。

解决方案:

  1. 对于需要立即执行的操作,建议使用同步API(如uni.setStorageSync)
  2. 对于应用退出时需要保存的数据,应该在数据变更时就立即保存,而不是等到onHide时处理
  3. 可以考虑使用plus.io的同步API,在iOS上可能有更好的兼容性

示例修改:

onShow() {
  console.log('App Show')
  uni.setStorageSync('result', '我进来了')
},
onHide() {
  console.log('App Hide')
  // 使用同步API
  const result = uni.getStorageSync('result')
  console.log(result)
  // 立即执行清除操作
  uni.removeStorageSync('result')
}
回到顶部