@@ -92,18 +92,21 @@ - (instancetype)initWithProxy:(NSDictionary *)proxyDict
9292 timeout : (UInt32)timeout
9393 urlConverter : (QNUrlConvert)converter
9494 upStatsDropRate : (float )dropRate
95- dns : (QNDnsManager*)dns {
95+ dns : (QNDnsManager*)dns
96+ enableBg : (BOOL )bg {
9697 if (self = [super init ]) {
97- NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration ];
9898 if (proxyDict != nil ) {
99- configuration.connectionProxyDictionary = proxyDict;
10099 _noProxy = NO ;
101100 }
102101 else {
103102 _noProxy = YES ;
104103 }
105- _httpManager = [[AFHTTPSessionManager alloc ] initWithSessionConfiguration: configuration];
106- _httpManager.responseSerializer = [AFHTTPResponseSerializer serializer ];
104+ if (bg) {
105+ _httpManager = [QNSessionManager sharedBgHttpManagerWithProxy: proxyDict];
106+ }else {
107+ _httpManager = [QNSessionManager httpManagerWithProxy: proxyDict];
108+ }
109+
107110 _timeout = timeout;
108111 _converter = converter;
109112 _dns = dns;
@@ -113,8 +116,37 @@ - (instancetype)initWithProxy:(NSDictionary *)proxyDict
113116 return self;
114117}
115118
119+ + (AFHTTPSessionManager*) httpManagerWithProxy : (NSDictionary *)proxyDict {
120+ NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration ];
121+ if (proxyDict != nil ) {
122+ configuration.connectionProxyDictionary = proxyDict;
123+ }
124+
125+ AFHTTPSessionManager *httpManager = [[AFHTTPSessionManager alloc ] initWithSessionConfiguration: configuration];
126+ httpManager.responseSerializer = [AFHTTPResponseSerializer serializer ];
127+ return httpManager;
128+ }
129+
130+ + (AFHTTPSessionManager*) sharedBgHttpManagerWithProxy : (NSDictionary *)proxyDict {
131+ static AFHTTPSessionManager *httpManager = nil ;
132+ static dispatch_once_t onceToken;
133+ dispatch_once (&onceToken, ^{
134+ NSURLSessionConfiguration *configuration = nil ;
135+ configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier: [QNUserAgent sharedInstance ].id ];
136+ if (proxyDict != nil ) {
137+ configuration.connectionProxyDictionary = proxyDict;
138+ }
139+
140+ httpManager = [[AFHTTPSessionManager alloc ] initWithSessionConfiguration: configuration];
141+ httpManager.responseSerializer = [AFHTTPResponseSerializer serializer ];
142+ [httpManager setDidFinishEventsForBackgroundURLSessionBlock: ^(NSURLSession *session) {}];
143+ });
144+
145+ return httpManager;
146+ }
147+
116148- (instancetype )init {
117- return [self initWithProxy: nil timeout: 60 urlConverter: nil upStatsDropRate: -1 dns: nil ];
149+ return [self initWithProxy: nil timeout: 60 urlConverter: nil upStatsDropRate: -1 dns: nil enableBg: NO ];
118150}
119151
120152+ (QNResponseInfo *)buildResponseInfo : (NSHTTPURLResponse *)response
0 commit comments