Browse Source

1.修改iOS Apex Drivers上传任务在停止后状态不正确。

Pen Li 7 năm trước cách đây
mục cha
commit
c1e173f0e2

+ 2 - 0
common/upload/RAUploadManager.h

@@ -87,4 +87,6 @@ extern NSString *const kUploadSetting;
 - (BOOL)canUpload;
 - (void)addRetryOperation:(RAUploadOperation *)operation;
 
+- (BOOL)reachable;
+
 @end

+ 15 - 1
common/upload/RAUploadManager.m

@@ -548,7 +548,10 @@ static RAUploadManager *sharedInstance;
     task[@"operation"]=nil;
     task[@"status"] = [NSNumber numberWithInt:TaskStatusStop] ;
     task[@"progress"] = [NSNumber numberWithDouble:0.0];
-    
+    task[@"msg"]= @"";
+    if (operation.updateUI) { // 网络状态改变时,首先是正在进行的网络活动中断,然后才通知网络改变
+        operation.updateUI();
+    }
     
 }  
 -(void) startAllTasks
@@ -632,6 +635,11 @@ static RAUploadManager *sharedInstance;
     return YES;
 }
 
+- (BOOL)reachable {
+    return self.reach.currentReachabilityStatus != NotReachable;
+}
+
+
 #pragma mark - Retry
 
 - (NSMutableArray<RAUploadOperation *> *)retryArr {
@@ -663,6 +671,12 @@ static RAUploadManager *sharedInstance;
 
 - (void)checkRetryOperations {
     
+    // 检测是否有网络连接
+    if (![self reachable]) {
+        // 当前task状态为Waiting,是否考虑 monitoreNetwork == YES 的条件下修改为Stop?
+        return;
+    }
+    
     // 检查是否有需要重试的任务
     if (self.retryArr.count == 0) {
         return;

+ 7 - 0
common/upload/RAUploadOperation.m

@@ -130,6 +130,8 @@ static const NSTimeInterval waitTimeIntervalDelta = 60 * 3;
         else
         {
             BOOL canUpload = [Appdelegate.uploadManager canUpload];
+            BOOL isReachable = [Appdelegate.uploadManager reachable];
+            
             DebugLog(@"can upload %@",@(canUpload));
             if (!canUpload) {
                 block_task[@"status"]=[NSNumber numberWithInt:TaskStatusStop];
@@ -137,6 +139,11 @@ static const NSTimeInterval waitTimeIntervalDelta = 60 * 3;
                 block_task[@"msg"]= @"Can only use wifi to upload";
                 
             }
+            else if (weakself.isCancelled || !isReachable) {
+                block_task[@"status"] = [NSNumber numberWithInt:TaskStatusStop] ;
+                block_task[@"progress"] = [NSNumber numberWithDouble:0.0];
+                block_task[@"msg"]= @"";
+            }
             else if([block_task[@"retry"] intValue]>=_maxRetry)
             {
                 block_task[@"status"]=[NSNumber numberWithInt:TaskStatusError];