- Ничто не терпит неудачу или бросает во время настройки < /li>
Задача не выполняет < /li> Список ожидающих задач пуст. Добавлена возможность обработки фоновой обработкивызывается во время запуска приложенияКод: Выделить всё
beginBackgroundMonitoring() - Протестируется исключительно на реальном устройстве
- Пробовал запустить e -l objc -(void) [[[[[[[[void) [[[[void) [[void) [[void) Bgtaskscheduler sharedscheduler] _simulatelaunchfortaskwithedifier:@"com.myapp.task"] , что также не запускает его
Код: Выделить всё
UIBackgroundModes
processing
BGTaskSchedulerPermittedIdentifiers
com.myApp.task
< /code>
Я вижу следующее в журналах: < /p>
🫥 Beginning background monitoring
🫥 Background monitoring setup complete
🫥 Submitting new background task for execution after 60.0 seconds
🫥 Request submitted successfully
🫥 Pending task requests: 0 []
< /code>
из следующего кода: < /p>
extension AlarmViewModel {
#if DEBUG
private static let minRefreshInterval: TimeInterval = 60
#else
private static let minRefreshInterval: TimeInterval = 60 * 60
#endif
private static let taskIdentifier = "com.myApp.task"
private static let tzIdDefaultsKey = "lastTimezoneIdentifier"
func beginBackgroundMonitoring() {
print("🫥 Beginning background monitoring")
let success = BGTaskScheduler.shared.register(forTaskWithIdentifier: Self.taskIdentifier, using: .global(qos: .background)) { [weak self] task in
print("🫥 Handling background task")
guard let task2 = task as? BGAppRefreshTask else {
print("🫥 Could not cast task to BGAppRefreshTask")
return
}
task2.expirationHandler = {
print("🫥 Expiration handler called")
}
self?.handleBackgroundTask(task: task2)
}
guard success else {
print("🫥 Failed to register for background task")
return
}
print("🫥 Background monitoring setup complete")
submitNewBackgroundTask(after: Self.minRefreshInterval)
BGTaskScheduler.shared.getPendingTaskRequests { requests in
print("🫥 Pending task requests: \(requests.count) \(requests)")
}
}
func submitNewBackgroundTask(after: TimeInterval) {
print("🫥 Submitting new background task for execution after \(after) seconds")
let request = BGAppRefreshTaskRequest(identifier: Self.taskIdentifier)
request.earliestBeginDate = Date(timeIntervalSinceNow: after)
do {
try BGTaskScheduler.shared.submit(request)
print("🫥 Request \(request) submitted successfully")
} catch {
print("🫥 Error submitting background task request: \(error)")
}
}
...
Подробнее здесь: https://stackoverflow.com/questions/794 ... round-task