Ver código fonte

add sessionWWanUploadForeground

Marino Faggiana 7 anos atrás
pai
commit
0194637b60
2 arquivos alterados com 47 adições e 17 exclusões
  1. 2 1
      iOSClient/CCGlobal.h
  2. 45 16
      iOSClient/Networking/CCNetworking.m

+ 2 - 1
iOSClient/CCGlobal.h

@@ -100,8 +100,9 @@ extern NSString *const flowEndpoint;
 #define k_download_session_foreground                   @"it.twsweb.Crypto-Cloud.download.sessionforeground"
 #define k_download_session_wwan                         @"it.twsweb.Crypto-Cloud.download.sessionwwan"
 #define k_upload_session                                @"it.twsweb.Crypto-Cloud.upload.session"
-#define k_upload_session_foreground                     @"it.twsweb.Crypto-Cloud.upload.sessionforeground"
 #define k_upload_session_wwan                           @"it.twsweb.Crypto-Cloud.upload.sessionwwan"
+#define k_upload_session_foreground                     @"it.twsweb.Crypto-Cloud.upload.sessionforeground"
+#define k_upload_session_wwanforeground                 @"it.twsweb.Crypto-Cloud.upload.sessionwwanforeground"
 
 // OperationQueue
 #define k_queue                                         @"it.twsweb.Crypto-Cloud.queue"

+ 45 - 16
iOSClient/Networking/CCNetworking.m

@@ -69,8 +69,9 @@
     [self sessionWWanDownload];
 
     [self sessionUpload];
-    [self sessionUploadForeground];
     [self sessionWWanUpload];
+    [self sessionUploadForeground];
+    [self sessionWWanUploadForeground];
     
     [self sharedOCCommunication];
     
@@ -174,6 +175,26 @@
     return sessionUpload;
 }
 
+- (NSURLSession *)sessionWWanUpload
+{
+    static NSURLSession *sessionWWanUpload = nil;
+    
+    if (sessionWWanUpload == nil) {
+        
+        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:k_upload_session_wwan];
+        
+        configuration.allowsCellularAccess = NO;
+        configuration.sessionSendsLaunchEvents = YES;
+        configuration.discretionary = NO;
+        configuration.HTTPMaximumConnectionsPerHost = 1;
+        configuration.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
+        
+        sessionWWanUpload = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
+        sessionWWanUpload.sessionDescription = k_upload_session_wwan;
+    }
+    return sessionWWanUpload;
+}
+
 - (NSURLSession *)sessionUploadForeground
 {
     static NSURLSession *sessionUploadForeground;
@@ -193,24 +214,23 @@
     return sessionUploadForeground;
 }
 
-- (NSURLSession *)sessionWWanUpload
+- (NSURLSession *)sessionWWanUploadForeground
 {
-    static NSURLSession *sessionWWanUpload = nil;
+    static NSURLSession *sessionWWanUploadForeground = nil;
     
-    if (sessionWWanUpload == nil) {
+    if (sessionWWanUploadForeground == nil) {
         
-        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:k_upload_session_wwan];
+        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
         
         configuration.allowsCellularAccess = NO;
-        configuration.sessionSendsLaunchEvents = YES;
         configuration.discretionary = NO;
         configuration.HTTPMaximumConnectionsPerHost = 1;
         configuration.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
         
-        sessionWWanUpload = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
-        sessionWWanUpload.sessionDescription = k_upload_session_wwan;
+        sessionWWanUploadForeground = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
+        sessionWWanUploadForeground.sessionDescription = k_upload_session_wwanforeground;
     }
-    return sessionWWanUpload;
+    return sessionWWanUploadForeground;
 }
 
 - (OCCommunication *)sharedOCCommunication
@@ -243,9 +263,10 @@
     if ([sessionDescription isEqualToString:k_download_session_wwan]) return [self sessionWWanDownload];
     
     if ([sessionDescription isEqualToString:k_upload_session]) return [self sessionUpload];
-    if ([sessionDescription isEqualToString:k_upload_session_foreground]) return [self sessionUploadForeground];
     if ([sessionDescription isEqualToString:k_upload_session_wwan]) return [self sessionWWanUpload];
-    
+    if ([sessionDescription isEqualToString:k_upload_session_foreground]) return [self sessionUploadForeground];
+    if ([sessionDescription isEqualToString:k_upload_session_wwanforeground]) return [self sessionWWanUploadForeground];
+
     return nil;
 }
 
@@ -256,8 +277,9 @@
     [[self sessionWWanDownload] invalidateAndCancel];
     
     [[self sessionUpload] invalidateAndCancel];
+    [[self sessionWWanUpload] invalidateAndCancel];
     [[self sessionUploadForeground] invalidateAndCancel];
-    [[self sessionWWanUpload] invalidateAndCancel];    
+    [[self sessionWWanUploadForeground] invalidateAndCancel];
 }
 
 - (void)settingSessionsDownload:(BOOL)download upload:(BOOL)upload taskStatus:(NSInteger)taskStatus activeAccount:(NSString *)activeAccount activeUser:(NSString *)activeUser activeUrl:(NSString *)activeUrl
@@ -295,6 +317,13 @@
                 else if (taskStatus == k_taskStatusResume) [task resume];
         }];
         
+        [[self sessionWWanUpload] getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
+            for (NSURLSessionTask *task in uploadTasks)
+                if (taskStatus == k_taskStatusCancel) [task cancel];
+                else if (taskStatus == k_taskStatusSuspend) [task suspend];
+                else if (taskStatus == k_taskStatusResume) [task resume];
+        }];
+        
         [[self sessionUploadForeground] getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
             for (NSURLSessionTask *task in uploadTasks)
                 if (taskStatus == k_taskStatusCancel) [task cancel];
@@ -302,7 +331,7 @@
                 else if (taskStatus == k_taskStatusResume) [task resume];
         }];
         
-        [[self sessionWWanUpload] getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
+        [[self sessionWWanUploadForeground] getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
             for (NSURLSessionTask *task in uploadTasks)
                 if (taskStatus == k_taskStatusCancel) [task cancel];
                 else if (taskStatus == k_taskStatusSuspend) [task suspend];
@@ -965,10 +994,10 @@
     NSURLSession *sessionUpload;
     
     // NSURLSession
-    if (metadata.e2eEncrypted == true) sessionUpload = [self sessionUploadForeground];
-    else if ([metadata.session isEqualToString:k_upload_session]) sessionUpload = [self sessionUpload];
-    else if ([metadata.session isEqualToString:k_upload_session_foreground]) sessionUpload = [self sessionUploadForeground];
+    if ([metadata.session isEqualToString:k_upload_session]) sessionUpload = [self sessionUpload];
     else if ([metadata.session isEqualToString:k_upload_session_wwan]) sessionUpload = [self sessionWWanUpload];
+    else if ([metadata.session isEqualToString:k_upload_session_foreground]) sessionUpload = [self sessionUploadForeground];
+    else if ([metadata.session isEqualToString:k_upload_session_wwanforeground]) sessionUpload = [self sessionWWanUploadForeground];
 
     NSURLSessionUploadTask *uploadTask = [sessionUpload uploadTaskWithRequest:request fromFile:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@", _directoryUser, fileNameForUpload]]];