我正在编写一个ios应用程序,它依赖于能够判断用户何时连接到wifi,以及当他或她连接或断开连接时,使用alamo fire发送异步请求。
我第一次连接时,异步成功。
然而,在我第一次连接后,任何切换的wifi都会导致404s。
我怀疑这是因为我在用户连接/断开连接后立即发送请求,这意味着短时间内他或她没有互联网服务。
我的问题是,如果请求失败,或者是否可以“缓存”我想要的请求并等到用户有互联网连接来制作请求,我可以重复请求吗?
答案 0 :(得分:0)
有很多解决方案可以解决这个问题。一种是再次递归调用下载方法,因此在错误上实现自动重试机制:
func downloadSomething() {
Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
.response { request, response, data, error in
if let error = error {
log(error)
self.downloadSomething() // recursive call to downloadSomething
} else {
// do something on success
}
}
}
你可以通过以下方式扩展它:
答案 1 :(得分:0)
我认为没有必要重新发明苹果代码,例如reachability或 swift reachability移植。您可以非常轻松地检查用户是否已连接到网络或wifi:
class func hasConnectivity() -> Bool {
let reachability: Reachability = Reachability.reachabilityForInternetConnection()
let networkStatus: Int = reachability.currentReachabilityStatus().rawValue
return networkStatus != 0
}
对于Wi-Fi连接:
(reachability.currentReachabilityStatus().value == ReachableViaWiFi.value)