但我需要编写一个重试机制,如果当前互联网连接不可用,当互联网连接回来时,我们应该重新发送请求到服务器.
如何在iOS中实现相同的功能,在Android的情况下非常容易和不同的方式可行.
iOS开发的新手,所以任何一个例子都会有很大的帮助.
我正在使用目标C.
解决方法 如果你使用 Alamofire,那么它们是RequestRetrIEr协议,它允许你重试网络请求( documentation link)class RetryHandler: RequestAdapter,RequestRetrIEr { public func should(_ manager: SessionManager,retry request: Request,with error: Error,completion: RequestRetryCompletion) { if let response = request.task.response as? httpURLResponse,response.statusCode == 401 { completion(true,1.0) // retry after 1 second } else { completion(false,0.0) // don't retry } }}let sessionManager = SessionManager()sessionManager.retrIEr = RetryHandler()sessionManager.request(urlString).responseJsON { response in deBUGPrint(response)}
如果您正在使用URLSession,那么在iOS 11中,apple添加了waitsForConnectivity标志,等待网络连接可用,然后再尝试连接
let configuration = URLSessionConfiguration.defaultconfiguration.timeoutIntervalForRequest = 120configuration.timeoutIntervalForResource = 120if #available(iOS 11,*) { configuration.waitsForConnectivity = true}let session = URLSession(configuration: configuration)
注意:会话仅在尝试初始连接时等待.如果网络在建立连接后丢失,则会像iOS 10一样通过完成处理程序或会话委托返回错误.它需要多长时间取决于资源timeoutIntervalForResource
或者最后,您可以使用Reachability检测网络更改并再次重试网络请求.
总结以上是内存溢出为你收集整理的如果连接不可用,则为服务请求的iOS重试机制全部内容,希望文章能够帮你解决如果连接不可用,则为服务请求的iOS重试机制所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)