长时间后重新启动应用程序时,用户默认设置被清除
Posted
技术标签:
【中文标题】长时间后重新启动应用程序时,用户默认设置被清除【英文标题】:User defaults are getting cleared on relaunching the app after long time 【发布时间】:2021-09-22 12:55:18 【问题描述】:我有一个可以登录的 ios 应用程序,我使用用户默认值来存储“firstLogin”、“freshInstall”、“userName”、“sessionTime”等数据。我遇到了终止应用程序的问题(双击主页并在应用程序上向上滑动以将其删除)并在很长一段时间后(大约 6 小时后)重新启动它正在清除我正在设置的所有 userDefaults 并且应用程序正在全新安装屏幕中打开。它实际上应该在登录状态下打开。
我正在使用synchronize
正确保存 userDefaults。
我没有任何代码来显式删除 userDefault 键值或清除它们。我有一些第三方框架,但我不确定如何检查它们是否导致了这个问题。 我怎么知道这个问题来自哪里?是否有任何情况下 userDefaults 会自动被清除?
启动屏幕是根据保存在 [NSUserDefaults standardUserDefaults] 中的变量“isLaunchScreenShown”确定的。在显示第一个安装和启动屏幕后,该变量设置为 true。卸载应用程序时,会清除 UserDefaults。 但在我现在的情况下,“isLaunchScreenShown”的 UserDefaults 值返回 null,表明它未设置,即使它不是安装后的第一次启动。
【问题讨论】:
UserDefaults
会在应用程序进入后台时自动同步,但是根据您的描述,用户杀死了应用程序,因此不会发生自动同步。您确定您在适当的时间致电synchronize
,例如更新重要的用户默认值后?
@Cristik 你never need to call synchronize
这种情况发生在 Xcode 构建中还是仅在发布构建中?您是否设置了断点并单步执行以确认默认值实际上已被清除?您确定这不是在您检查默认值之前显示屏幕的启动/计时问题吗? edit 你的问题显示了屏幕是如何在启动时确定的。简短的回答是没有理由清除默认值
【参考方案1】:
这是 iOS 15 SDK、Xcode 13 的问题...有人报告。
在这里查看:https://github.com/firebase/firebase-ios-sdk/issues/8695 并在这里查看:https://developer.apple.com/forums/thread/685685
【讨论】:
以上是关于长时间后重新启动应用程序时,用户默认设置被清除的主要内容,如果未能解决你的问题,请参考以下文章
当我重新启动移动设备或此 android/firebase 应用程序时,Firebase 离线数据库数据被清除?*