Что я пробовал:
- Я пробовал как на симуляторе, так и на физическом устройстве.
- Я включил фоновые режимы (фоновая выборка).
- и отправил задачу в SceneDelegate на SceneDidEnterBackground(:) с помощью BGTaskScheduler.shared. submit(:).
- Я также добавил идентификатор в «Разрешенные идентификаторы планировщика фоновых задач» в Info.plist.
- Я попробовал выбрать «Отладка» > «Имитировать фоновую выборку».
func scene(_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions) {
let isRegistered = BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.example.bgTaskIdentifier",
using: nil) { task in
print("Executed") // Does not print
self.handleAppRefresh(task: task as! BGAppRefreshTask)
}
print("isRegistered: \(isRegistered)") // Prints "isRegistered: true"
}
func sceneDidEnterBackground(_ scene: UIScene) {
scheduleAppRefresh()
print("Entered Background") // Prints "Entered Background"
}
func scheduleAppRefresh() {
let request = BGAppRefreshTaskRequest(identifier: "com.example.bgTaskIdentifier")
request.earliestBeginDate = Date(timeIntervalSinceNow: 5 * 60)
do {
try BGTaskScheduler.shared.submit(request)
} catch {
print("Could not schedule app refresh: \(error)") // Does not reach the catch block
}
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... nchhandler
Мобильная версия