【发布时间】:2017-02-28 12:14:20
【问题描述】:
我想在本地数据库 sqlite 中存储一些信息,如果互联网断开,甚至当应用程序终止时。你对这份工作有什么建议?如何处理识别这些事件?
***应用程序终止时,而不是应用程序将要终止时
【问题讨论】:
-
你不能那样做。苹果不允许你。
标签: ios swift web-services background
我想在本地数据库 sqlite 中存储一些信息,如果互联网断开,甚至当应用程序终止时。你对这份工作有什么建议?如何处理识别这些事件?
***应用程序终止时,而不是应用程序将要终止时
【问题讨论】:
标签: ios swift web-services background
当任何应用程序在终止之前终止时,它会在很短的时间内进入后台模式,并且以下方法将在 App Delegate 类中执行:-
optional func applicationDidEnterBackground(_ application: UIApplication)
您可以编写脚本将数据保存在本地数据库中。 如果网络状态发生变化,您也可以使用Reachability 获得通知。
【讨论】:
应用终止时Apple不允许任何操作
您可以在应用终止之前执行您的操作。
UIApplicationDelegate 有一个委托方法 - applicationWillTerminate,在您的应用程序即将终止时调用。
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate.
}
您可以在此方法的块中设置代码来存储信息/数据
对于 iOS 8+ 的 Internet 连接,您可以在 Web 服务 API 调用期间检查 Internet 连接状态。如果没有 Internet 连接,Web 服务 API 响应将出现此错误。错误码=-1005
时可以进行操作Error: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo=0x7ba8e5b0 {NSErrorFailingURLStringKey=, _kCFStreamErrorCodeKey=57, NSErrorFailingURLKey=, NSLocalizedDescription=The network connection was lost., _kCFStreamErrorDomainKey=1, NSUnderlyingError=0x7a6957e0 "The network connection was lost."}
【讨论】: