我对 swift(1 周)和 iOS 编程相当陌生,我的问题是我似乎错过了一些基本的理解。下面您会看到一个由后台通知触发的功能。我可以并且已经验证我可靠地收到后台通知并且应用程序处于活动状态(在控制台上打印输出原始数据值)只要应用程序在前台一切都按预期工作,它就会被触发并发送单个 https 请求。背景触发器每分钟都有一个计时器。
现在,当应用程序进入后台时,整个事情都发生了变化。在这种情况下,我仍然通过通知(控制台打印输出)获得触发器,并且我可以在调试器中看到与前台的魅力相同的功能。它仍然有效,它仍然会被触发,但数据包的发送频率只是如此频繁,似乎在 2 到 30 分钟之间随机发送。
let config = URLSessionConfiguration.background(withIdentifier: "org.x.Reporter")
class queryService {
let defaultSession = URLSession(configuration: config)
var dataTask: URLSessionDataTask?
var errorMessage = ""
func getSearchResults(baseURL: String, searchTerm: String) {
dataTask?.cancel()
config.requestCachePolicy = .reloadIgnoringLocalAndRemoteCacheData;
config.timeoutIntervalForRequest = 10
if var urlComponents = URLComponents(string: "https://host.com/reportPosition.php") {
urlComponents.query = "\(searchTerm)"
guard let url = urlComponents.url else { return }
dataTask = defaultSession.dataTask(with: url)
}
// 7
dataTask?.resume()
}
}