一、创建一个Session,并且对其进行初始化
包含三种创建方式:
1、+ (NSURLSession *)sharedSession 单例模式
2、+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration 这是常规的方式
3、+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(nullable id <NSURLSessionDelegate>)delegate delegateQueue:(nullable NSOperationQueue *)queue 这是常用的方式
配置方式是也是有三种:
1、+ (NSURLSessionConfiguration *)defaultSessionConfiguration 常规的配置
2、+ (NSURLSessionConfiguration *)ephemeralSessionConfiguration 临时配置
3、+ (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier: 运行在后台的配置
注意:设置Configuration的值不会改变当前Session方式,只有当你重新初始化一个Session的时候生效
NSURLSessionConfiguration *myconfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"backgroundsession"]; //请求的缓存策略 myconfiguration.requestCachePolicy = NSURLRequestUseProtocolCachePolicy; //数据传输超时,当恢复传输时会清零 myconfiguration.timeoutIntervalForRequest = 5; //单条请求超时,决定一条请求的最长生命周期 myconfiguration.timeoutIntervalForResource = 5; //请求的服务类型 myconfiguration.networkServiceType = NSURLNetworkServiceTypeDefault; //是否允许使用移动网络(电话网络)default is YES myconfiguration.allowsCellularAccess = YES; //后台模式生效,YES允许自适应系统性能调节 myconfiguration.discretionary = YES; self.testSession = [NSURLSession sessionWithConfiguration:myconfiguration delegate:self delegateQueue:[NSOperationQueue currentQueue]];
二、实现代理(Session-Level)
选用第三种初始化方式创建的Session会有三个Session级别的代理供大家使用
//session关闭回调 -(void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(NSError *)error { NSLog(@"%s,%@",__func__,error); } //证书安全问题 -(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler { } //后台网络任务完成 // 将回调 :-application:handleEventsForBackgroundURLSession:completionHandler: -(void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session { }
时间: 2024-10-28 09:31:17