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

时间:2018-03-07 02:11:28

标签: swift 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中是否有开箱即用的方式来获取此行为?

1 个答案:

答案 0 :(得分:0)

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

在Siesta中,背景请求的含义并不完全清楚。它是一个内存缓存,所以请求的数据在哪里?然而,Siesta持久的缓存支持很快就会从“自己动手”开始逐步“开箱即用”,此时后台请求变得更加引人注目。

您应该能够为您的Siesta服务构造函数传递URLSession为后台请求配置,如上例所示,Siesta将很乐意使用它来发出请求,与以往一样。不太清楚的是,这些回复到达时会发生什么;如果有必要,你可以坚持不懈地回应。