如何解决Swift应用程序将终止并保存在Cloudkit中
快速applicationWillTerminate和Cloudkit
我正在寻找解决方案。在我的游戏中,CloudKit在关闭应用程序时保存游戏状态。 保存时,将启动几个CloudKit调用以保存所有数据。这是由applicationDidEnterBackground中的BackgroundTask完成的。
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
}
}
}
BackgroundTask将其保存到iCloud大约需要2秒钟的时间。它们是小包装。效果很好。
但是,如果用户双击HomeButton并立即向上滑动即可移动应用,则会调用applicationWillTerminate。
如果我现在调用与applicationDidEnterBackground中相同的代码,则会调用applicationWillTerminate。然后执行直接代码。但是不要保存iCloud数据。为什么?
我有解决方案吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。