使用Siesta和Swift在后台的应用程序发出网络请求



我正在发出从 UNUserNotification 操作启动的 HTTPS 请求,因此它在后台运行我的应用程序时执行。我怀疑Siesta不支持此功能,在这种情况下,我将提出功能请求!但首先我想看看我是否正确。

当我使用 Siesta 在后台设置并发出请求时,在我打开应用程序之前似乎没有发出任何请求,当我收到URLSessionTask错误代码 -1003"HTTP 加载失败"并显示消息时:URL Session Task Failed: A server with the specified hostname could not be found.

如果我使用普通URLSession发出请求,而不使用样板为后台执行配置会话,则与我看到的行为完全相同:

let config = URLSessionConfiguration.background(withIdentifier: String(format: "%f", Date().timeIntervalSinceReferenceDate))
config.isDiscretionary = isDiscretionary
config.requestCachePolicy = .reloadIgnoringLocalCacheData
config.sessionSendsLaunchEvents = true
config.timeoutIntervalForResource = backgroundTimeoutInterval
return URLSession(configuration: config,
                  delegate: self,
                  delegateQueue: .main)

有没有一种开箱即用的方法可以在 Siesta 中获得这种行为?

是的,Siesta目前不正式支持后台请求,尽管它也没有正式排除它们。

目前还不完全清楚后台请求在Siesta中应该意味着什么。这是一个内存缓存,那么请求的数据去哪里了?然而,Siesta的持久缓存支持将很快从"自己滚动"转变为"开箱即用",此时后台请求变得更加引人注目。

您应该能够向Siesta服务构造函数传递为后台请求配置的URLSession,如上面的示例所示,Siesta将很乐意使用它来发出请求,就像以前一样。不太清楚的是,当这些反应到达时应该如何处理;您将需要在必要时保留响应。

相关内容

  • 没有找到相关文章

最新更新