如何在 12 小时后清除特定密钥的 UserDefault

How to clear UserDefault for a specific key after 12 hours

在用户 login.After 研究和尝试后,我试图通过设置计时器来删除用户默认密钥,我发现当应用程序进入后台时计时器不会 运行。

如果您想在后台执行某些任务,您必须为应用程序启用后台模式。但这只会让 运行 应用程序在后台运行几分钟。

除此之外,您应该保存登录时间的时间戳,并检查每个 didFinishLaunchingWithOptions 当前时间和您保存的时间的时差。

使用 DispatchQueue.global 而不是 NSTimer ,将全局队列设置为后台。并在执行中使用 DispatchWorkItem.

DispatchQueue.global(qos: .background).asyncAfter(deadline: .now() + TimeInterval(yourtime interval value), execute: workItem)

var workItem = DispatchWorkItem {
// write your flush userdefault code here
}

使用 workItem 后将其取消。

self.workItem?.cancel()

您可以将 loginDate 存储在用户默认值中,并在 applicationDidBecomeActive(_ application: UIApplication)

中使用 Date().timeIntervalSince(loginDate) > 12 * 60 * 60 进行检查

试试这个

DispatchQueue.global(qos: .background).async {
// Write your code here timer running while app will not turminate
}