Как очистить UserDefault для определенного ключа через 12 часов

Я пытаюсь удалить ключ пользователя по умолчанию, настроив таймер после входа пользователя в систему. После исследования и попытки я обнаружил, что таймер не запускается, когда приложение входит в фоновый режим.


person Vincia Tanqling    schedule 01.08.2018    source источник


Ответы (4)


Вы можете сохранить loginDate по умолчанию пользователя и выполнить проверку с Date().timeIntervalSince(loginDate) > 12 * 60 * 60 в applicationDidBecomeActive(_ application: UIApplication)

person Sean    schedule 01.08.2018
comment
Вам нужно совместить это с таймером. - person rmaddy; 01.08.2018
comment
Спасибо! Вы экономите мое время. - person Vincia Tanqling; 01.08.2018

Если вы хотите выполнять какую-либо задачу в фоновом режиме, вам необходимо включить фоновый режим для приложения. Но это позволит только несколько минут запускать приложение в фоновом режиме.

Вместо этого вы должны сохранить отметку времени входа в систему и проверять каждую didFinishLaunchingWithOptions разницу во времени между текущим временем и временем, которое вы сохранили.

person Sharad Paghadal    schedule 01.08.2018

Используйте 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()
person Shauket Sheikh    schedule 01.08.2018

Попробуй это

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