Приложение Swift будет завершено и сохранено в Cloudkit
Приложение SwiftWillTerminate и Cloudkit
Ищу решение. В моей игре CloudKit сохраняет состояние игры, когда приложение закрывается. При сохранении запускается несколько вызовов CloudKit для сохранения всех данных. Это делается с помощью BackgroundTask в applicationDidEnterBackground.
class GameScene: SKScene {
var backgroundTask: UIBackgroundTaskIdentifier = .invalid
....
@objc func appMovedToBackground() {
....
// Call CloudKit save
registerBackgroundTask()
func registerBackgroundTask() {
backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
self?.endBackgroundTask()
}
assert(backgroundTask != .invalid)
}
func endBackgroundTask() {
print("Background task ended.")
UIApplication.shared.endBackgroundTask(backgroundTask)
backgroundTask = .invalid
}
}
}
Фоновой задаче требуется около 2 секунд, чтобы сохранить ее в iCloud. Это небольшие пакеты. Прекрасно работает.
Но если пользователь дважды щелкнет HomeButton и сразу переместит приложение, проведя пальцем вверх, вызывается applicationWillTerminate.
Если я сейчас вызываю тот же код, что и в applicationDidEnterBackground, вызывается applicationWillTerminate. Затем выполняется прямой код. Но не сохраняйте данные iCloud. Почему?
есть ли решение для меня?