【问题标题】: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,例如更新重要的用户默认值后?
  • 这种情况发生在 Xcode 构建中还是仅在发布构建中?您是否设置了断点并单步执行以确认默认值实际上已被清除?您确定这不是在您检查默认值之前显示屏幕的启动/计时问题吗? edit 你的问题显示了屏幕是如何在启动时确定的。简短的回答是没有理由清除默认值

标签: ios objective-c nsuserdefaults


【解决方案1】:

这是 iOS 15 SDK、Xcode 13 的问题...有人报告。

在这里查看:https://github.com/firebase/firebase-ios-sdk/issues/8695 并在这里查看:https://developer.apple.com/forums/thread/685685

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2012-08-10
    • 1970-01-01
    相关资源
    最近更新 更多