К сожалению, push-уведомления с вашего сервера - единственный способ иметь фоновые задачи по расписанию, которое вы решаете.
Фоновая выборка предназначена для извлечения данных с сервера, поэтому они готовы для пользователя, когда они открывают приложение, но iOS решает, когда его использовать, основываясь на том, когда пользователь использует приложение.
Вы можете определить, когда приложение работает в фоновом режиме, и при необходимости запланировать локальное уведомление, но есть только короткий промежуток времени для выполнения кода, прежде чем он будет приостановлен вместе с любыми таймерами, которые вы пытаетесь запустить.
Вы можете определить, когда приложение переходит в фоновый режим, двумя способами:
Реализация методов applicationWillResignActive()
или UIApplicationDidEnterBackground()
в делегате приложения.
Зарегистрируйтесь для получения уведомления UIApplicationDidEnterBackground
.
Вот пример регистрации для уведомления:
let center = NotificationCenter.default
center.addObserver(self, selector: #selector(yourMethod), name: Notification.Name.UIApplicationDidEnterBackground, object: nil)
Вы также можете проверить состояние приложения в любое время, например:
let state = UIApplication.shared.applicationState
if state == .background {
// App is in background
}
else if state == .active {
// App is in foreground
}
Дополнительная информация о продлении времени фонового выполнения , фоновое обновление приложения и режимах фона .