我正在尝试通过在用户登录后设置计时器来删除用户默认密钥。经过研究并尝试后,我发现当应用程序进入后台时计时器不会运行。
答案 0 :(得分:0)
如果要在后台执行某些任务,则必须为应用程序启用后台模式。但这只允许几分钟在后台运行应用程序。
相反,您应该保存登录时间的时间戳记,并检查每个didFinishLaunchingWithOptions
的当前时间和保存时间的时差。
答案 1 :(得分:0)
使用 DispatchQueue.global 代替 NSTimer ,将全局队列设置为后台。在执行中使用DispatchWorkItem。
getJSON
使用workItem后将其取消。
DispatchQueue.global(qos: .background).asyncAfter(deadline: .now() + TimeInterval(yourtime interval value), execute: workItem)
var workItem = DispatchWorkItem {
// write your flush userdefault code here
}
答案 2 :(得分:0)
您可以在用户默认状态下存储loginDate
,并在Date().timeIntervalSince(loginDate) > 12 * 60 * 60
中对applicationDidBecomeActive(_ application: UIApplication)
进行检查
答案 3 :(得分:0)
尝试一下
DispatchQueue.global(qos: .background).async {
// Write your code here timer running while app will not turminate
}