c不是c
c不是c
  • 发布:2026-01-14 16:50
  • 更新:2026-01-16 16:54
  • 阅读:68

【报Bug】setStorageSync这个api进行存储,在苹果应用上,缓存会频繁丢失。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.76

手机系统: 全部

手机厂商: 苹果

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

1.苹果13、苹果mini12、苹果15等等 2.安卓:华为、荣耀、oppo等常见安卓厂商。3.纯鸿蒙:目前未支持

操作步骤:

您好,代码逻辑,如下1.2:
1.首次登录,登录请求后台接口,成功后再调用setStorageSync进行缓存登录信息、token。

  1. 经过首次登录后,在登录页的onLoad会通过一个方法,方法里调用getStorageSync,去判断toekn是否存在,存在则不再重新登录正常在应用内页,否则会重登。
    实际上结果:
    发布到各自应用商城后。首次登录后,存储了,但在苹果手机上,使用者会一天内出现多次token失效问题,存储没有了,都退出回到登录页。安卓的话是随机,可能2天或者更长,一天内相对少有。

预期结果:

登录存储token后,token不失效的情况下,正常在登录的onload判断是否存在token,存在会跳转到进应用。

实际结果:

发布到各自应用商城后。首次登录后,存储了,但在苹果手机上,使用者会一天内出现多次token失效问题,存储没有了,都退出回到登录页。安卓的话是随机,可能2天或者更长,一天内相对少有。

bug描述:

您好,代码逻辑,如下1.2:
1.首次登录,登录请求后台接口,成功后再调用setStorageSync进行缓存登录信息、token。

  1. 经过首次登录后,在登录页的onLoad会通过一个方法,方法里调用getStorageSync,去判断toekn是否存在,存在则不再重新登录正常在应用内页,否则会重登。
    实际上结果:
    发布到各自应用商城后。首次登录后,存储了,但在苹果手机上,使用者会一天内出现多次token失效问题,存储没有了,都退出回到登录页。安卓的话是随机,可能2天或者更长,一天内相对少有。
2026-01-14 16:50 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该bug反馈内容不完整:缺少具体代码示例、未说明是uni-app还是uni-app x项目、未提供iOS设备型号及系统版本、未描述存储数据量大小及触发丢失的具体场景(如应用前后台切换时)。复现步骤过于笼统,仅描述业务逻辑而未给出可操作的技术路径,官方难以直接复现。预期结果合理,但实际结果中iOS频繁丢失存储不符合setStorageSync持久化特性,需排查是否因iOS后台管理机制导致应用被系统回收后存储状态异常。

经知识库核查,iOS系统对后台应用有严格资源限制,当应用长时间处于后台可能被系统终止,此时若未妥善处理存储恢复逻辑会导致数据丢失。此现象非API本身缺陷,而是平台特性导致。建议:1. 升级HBuilderX至最新版(当前4.76较旧);2. 改用plus.storage替代setStorageSync,其提供更稳定的原生存储支持;3. 在应用启动时增加存储恢复校验逻辑;4. 避免存储过大对象(iOS对UserDefaults单次写入有限制)。若仍需使用setStorageSync,应添加try-catch异常处理并监控存储状态。

内容为 AI 生成,仅供参考
c不是c

c不是c (作者)

1.对于HBuilderX版本,在官方也是4.7.6的时候,这个缓存问题就存在了,当时就更新的最新版本。

  1. 我试试用plus.storage看看
  2. 启动时就加了存储恢复校验逻辑
DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

这个不好复现,最好还是验证和 sync 有关系吗,异步的存储是否可以,使用 plus 是否可以,苹果的同一台设备一定会修是吧吗,是否有规律。

如果能稳定复现,可以提供复现工程,提供更多信息,有助于定位和解答你的问题。

要回复问题请先登录注册