Swift - post 设备连接后后台数据
Swift - post data in background once device is connected
我有一个应用要求用户 post 从表单到特定端点的数据。我需要用户能够离线使用该应用程序。因此,他们的想法是,他们可以像往常一样继续填写表格,然后一旦设备再次在线,数据就可以 posted 到相关端点。
我不确定如何在 iOS 中处理这个问题。如果可以在后台避免,我不想持续检查连接状态。有没有办法将任务排队并等待建立连接?
这是内置的,功能非常丰富。
见Uploading Data to a Website
和 Downloading Files in the Background 了解全部详情。 (后台文档侧重于下载,但同样的方法也适用于发送。)
使用URLSessionConfiguration.background(withIdentifier:)
创建后台会话。然后您可以将其与 URLSessionUploadTask 一起使用来发送您的数据。
如果您需要在任务完成时启动并收到通知,请设置 sessionSendsLaunchEvents
(但听起来您可能不需要)。
使用委托进行回调。您不能为此配置使用完成处理程序。
例如,要创建会话(基于文档):
private lazy var urlSession: URLSession = {
let config = URLSessionConfiguration.background(withIdentifier: "MySession")
return URLSession(configuration: config, delegate: self, delegateQueue: nil)
}()
如果您需要在完成时重新启动,您还需要配置您的应用委托来处理这些启动事件,方法是实现:
func application(_ application: UIApplication,
handleEventsForBackgroundURLSession identifier: String,
completionHandler: @escaping () -> Void)
(请务必在完成活动后致电 completionHandler
!)
有关更多详细信息,请参阅 WWDC 2020 Background execution demystified。
我有一个应用要求用户 post 从表单到特定端点的数据。我需要用户能够离线使用该应用程序。因此,他们的想法是,他们可以像往常一样继续填写表格,然后一旦设备再次在线,数据就可以 posted 到相关端点。
我不确定如何在 iOS 中处理这个问题。如果可以在后台避免,我不想持续检查连接状态。有没有办法将任务排队并等待建立连接?
这是内置的,功能非常丰富。
见Uploading Data to a Website 和 Downloading Files in the Background 了解全部详情。 (后台文档侧重于下载,但同样的方法也适用于发送。)
使用URLSessionConfiguration.background(withIdentifier:)
创建后台会话。然后您可以将其与 URLSessionUploadTask 一起使用来发送您的数据。
如果您需要在任务完成时启动并收到通知,请设置 sessionSendsLaunchEvents
(但听起来您可能不需要)。
使用委托进行回调。您不能为此配置使用完成处理程序。
例如,要创建会话(基于文档):
private lazy var urlSession: URLSession = {
let config = URLSessionConfiguration.background(withIdentifier: "MySession")
return URLSession(configuration: config, delegate: self, delegateQueue: nil)
}()
如果您需要在完成时重新启动,您还需要配置您的应用委托来处理这些启动事件,方法是实现:
func application(_ application: UIApplication,
handleEventsForBackgroundURLSession identifier: String,
completionHandler: @escaping () -> Void)
(请务必在完成活动后致电 completionHandler
!)
有关更多详细信息,请参阅 WWDC 2020 Background execution demystified。