- Включить режим избрания фонового избрания в возможности проекта
- В info.plist добавьте массив для ключа bgtaskschedulerpermittidentiedifiers с соответствующим идентификатором для задачи Bkg fetch
- Appdelegate didfinishlaunchingwithoptions: , зарегистрируйте фоновую задачу
Код: Выделить всё
BGTaskScheduler.shared.register(forTaskWithIdentifier: bkgTaskId, using: nil) { (task) in
self.handleAppRefreshTask(task: task as! BGAppRefreshTask)
}
< /code>
[*] handleAppRefreshTask(task: BGAppRefreshTask)
[*] В конце вышеперечисленного метода назначить задачу выстрелил после интервала в 1 час (или всякий раз, когда iOS планирует это) < /p>
< /li>
< /ol>
Код: Выделить всё
func scheduleRefresh() {
let request = BGAppRefreshTaskRequest(identifier: bkgTaskId)
request.earliestBeginDate = Date(timeIntervalSinceNow: 3600)
do {
try BGTaskScheduler.shared.submit(request)
} catch {
Log("Could not schedule app refresh: \(error)")
}
}
< /ol>
Когда я моделирую задачу избрать фон из Xcode (запуск приложения на устройстве), я получаю ниже в консоли, и фоновая задача никогда не запланирована < /p>
Код: Выделить всё
[ProcessSuspension] 0x28138ef40 - WKProcessAssertionBackgroundTaskManager: Ignored request to start a new background task because RunningBoard has already started the expiration timer
Подробнее здесь: https://stackoverflow.com/questions/687 ... ling-error