我正在编写一个ios应用程序,它依赖于能够判断用户何时连接到wifi,以及当用户连接或断开连接时,使用alamo发送异步请求。
第一次连接时,我的异步成功。
然而,在我第一次连接之后,无线网络的任何切换都会产生404 s。
我怀疑这是因为当用户连接/断开连接时,我会立即发送请求,这意味着他或她暂时没有互联网服务。
我的问题是,如果请求失败,我是否可以重复请求,或者是否可以“缓存”我想要发出的请求,直到用户有了互联网连接才能发出请求?
发布于 2016-04-17 06:36:01
解决这一问题的方法有很多。一种是再次递归地调用下载方法,从而实现了对错误的自动重试机制:
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
}
}
}您可以通过以下方式对此进行扩展:
发布于 2016-04-17 14:24:41
我认为不需要像可达性这样重新发明苹果代码,也不需要像swift 可达性移植那样。您可以很容易地检查用户是否连接到网络或wifi:
class func hasConnectivity() -> Bool {
let reachability: Reachability = Reachability.reachabilityForInternetConnection()
let networkStatus: Int = reachability.currentReachabilityStatus().rawValue
return networkStatus != 0
}关于Wi连接:
(reachability.currentReachabilityStatus().value == ReachableViaWiFi.value)https://stackoverflow.com/questions/36673065
复制相似问题