Alamofire设置请求超时时间

都知道Alamofire是一个比较火的iOS网络请求库,用着比较方便,但里面有个坑爹的地方是,文档里并没有对超时(timeout)问题做更进一步描述。

Alamofire默认的超时时间是一分钟,要等比较久,如果加上loading效果,这么长时间loading体验不好。解决方法是要修改超时时间。查了些资料,是要进行类似如下设置:

let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 10
let sessionManager = Alamofire.SessionManager(configuration: configuration)

然后是进行请求sessionManager.request...。这样你会发现,怎么按照网上的修改都不起作用。后面去官方issue查到,原来,不能在方法里面进行这些设置,sessionManager在退出方法后便被回收,设置自然不起作用,正确的方法是要保持一个公有的sessionManager变量,这样就不会被回收。即要进行类似如下改动:

static let sharedSessionManager: Alamofire.SessionManager = {
        let configuration = URLSessionConfiguration.default
        configuration.timeoutIntervalForRequest = 10
        return Alamofire.SessionManager(configuration: configuration)
    }()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容