瀏覽代碼

1.上传过程中 切换网络 frp 内外网切换

huangxiaodong 1 年之前
父節點
當前提交
dfd5afb7a8

+ 28 - 5
创维盒子/双子星云手机/AppDelegate/AppDelegate.m

@@ -22,6 +22,7 @@
 #import "ZFLandscapeRotationManager.h"
 #import <WebRTC/AMediaStream.h>
 #import "pingManager.h"
+#import "nasUploadFileManager.h"
 
 @interface AppDelegate ()<JJExceptionHandle,WXApiDelegate>
 {
@@ -244,6 +245,14 @@
 
         [[NSNotificationCenter defaultCenter] postNotificationName:NetWorkChangeNotification object:nil];
         
+        //网络切换
+        if(status == AFNetworkReachabilityStatusReachableViaWiFi){//检测到起切换wifi 重新ping一下
+            [[pingManager shareManager] startPingDeviceIpFun];
+        }
+        else {//非wifi链接
+            [pingManager shareManager].isPingOk = NO;
+        }
+        
         //是否备份中
         if([nasBackupsManager shareInstance].curPhotosBackupsTaskMod
            && [nasBackupsManager shareInstance].curPhotosBackupsTaskMod.curBackupsState == backupsStateUploading){
@@ -257,12 +266,26 @@
             });
         }
         
-        //网络切换
-        if(status == AFNetworkReachabilityStatusReachableViaWiFi){//检测到起切换wifi 重新ping一下
-            [[pingManager shareManager] startPingDeviceIpFun];
+        HLog(@"hxd 1111")
+        //是否上传中
+        BOOL needToReUploadTaskType = [nasUploadFileManager shareInstance].needToReUploadTaskType;
+        if(needToReUploadTaskType){//如果网络层先保存 这里为YES
+            HLog(@"hxd 2222")
+            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+                [[nasUploadFileManager shareInstance] reUploadFileFunByNetWork];
+            });
         }
-        else {//非wifi链接
-            [pingManager shareManager].isPingOk = NO;
+        else{
+            HLog(@"hxd 3333")
+            //有可能是网络变化先收到通知
+            if([nasUploadFileManager shareInstance].uploadingArr.count > 0){
+                HLog(@"hxd 4444")
+                [[nasUploadFileManager shareInstance] saveUploadingTaskByNetWorkErrorFun];
+                //因为不知道是网络变化通知快 还是传输快 这里5秒后重新传
+                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+                    [[nasUploadFileManager shareInstance] reUploadFileFunByNetWork];
+                });
+            }
         }
         
     }];

+ 8 - 0
创维盒子/双子星云手机/NAS/nasUploadManager/nasMixUploadManager.m

@@ -636,6 +636,14 @@
 - (void)handleCustomUploadResultBy:(NSData*)data withResponse:(NSURLResponse*)response withError:(NSError*)error success:(netWork_Success)success faild:(netWork_Faild)faildStr{
     if(error){
         HLog(@"上传错误:%@",error)
+        
+        // -1005 网络中断 1009 网络似乎中断
+        if(error.code == -1005
+           ||error.code == -1009){//网络中断
+            [[nasUploadFileManager shareInstance] saveUploadingTaskByNetWorkErrorFun];
+            return;
+        }
+        
         if(error.code != -999){
             faildStr(error);
         }

+ 9 - 1
创维盒子/双子星云手机/NAS/nasUploadManager/nasUploadFileManager.h

@@ -19,13 +19,17 @@ NS_ASSUME_NONNULL_BEGIN
 +(instancetype)shareInstance;
 //数据库数据
 @property (nonatomic, strong) NSMutableArray * _Nullable databaseArr;
+@property (nonatomic, strong) NSMutableArray * _Nullable uploadingArr;
 
 @property (nonatomic, assign) BOOL  isSuspendType;
 //@property (nonatomic, assign) BOOL  isUploadIngType;//弃用
 @property (nonatomic, assign) BOOL  isNewAddTaskType;
-@property (nonatomic, assign) NSInteger  curUploadModelNumbers;
+//@property (nonatomic, assign) NSInteger  curUploadModelNumbers;
 @property (nonatomic, assign) NSInteger  reUploadIngSelectIndex;
 
+@property (nonatomic, strong) NSMutableArray * _Nullable netWorkFailSaveArr;
+@property (nonatomic, assign) BOOL  needToReUploadTaskType;//
+
 #pragma mark 读取数据库数据
 - (void)getDataInDatabaseFun:(BOOL)isReGet complete:(custom_complete_Arr)complete;
 
@@ -41,6 +45,10 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)reUploadFileFunBy:(NSMutableArray*)Arr withAll:(BOOL)isAllType;
 //暂停上传 当 isSuspendAll为NO时候 传指定暂停哪一个
 - (void)suspendUploadFileFun:(BOOL)isSuspendAll withModel:(uploadFileDataModel*)model;
+//网络失败后任务暂时保存
+- (void)saveUploadingTaskByNetWorkErrorFun;
+//重新上传网络失败的任务
+- (void)reUploadFileFunByNetWork;
 @end
 
 NS_ASSUME_NONNULL_END

+ 50 - 1
创维盒子/双子星云手机/NAS/nasUploadManager/nasUploadFileManager.m

@@ -122,7 +122,7 @@
     
     _isNewAddTaskType = YES;
     
-    self.curUploadModelNumbers = indexPathsForSelectedItems.count;
+    //self.curUploadModelNumbers = indexPathsForSelectedItems.count;
     
     NSMutableArray *newUploadTaskArr = [NSMutableArray new];
     
@@ -660,4 +660,53 @@
     
     
 }
+
+- (NSMutableArray*)uploadingArr
+{
+    if(_databaseArr && _databaseArr.count == 3){
+        NSMutableArray *uploadingArr = _databaseArr[0];
+        return uploadingArr;
+    }
+    
+    return [NSMutableArray new];
+}
+
+
+//网络失败后任务暂时保存
+- (void)saveUploadingTaskByNetWorkErrorFun
+{
+    HLog(@"hxd saveUploadingTaskByNetWorkErrorFun")
+    _netWorkFailSaveArr = [NSMutableArray arrayWithArray:self.uploadingArr];
+    //[self suspendUploadFileFun:YES withModel:nil];
+    
+    [[nasMixUploadManager shareManager] cancelUploadAllTaskFun];
+    
+    if(_netWorkFailSaveArr.count > 0){
+        _needToReUploadTaskType = YES;
+    }
+    
+}
+
+//重新上传网络失败的任务
+- (void)reUploadFileFunByNetWork
+{
+    [nasUploadFileManager shareInstance].needToReUploadTaskType = NO;
+    
+    if(_netWorkFailSaveArr && _netWorkFailSaveArr.count >0){
+        
+        //1.修改状态从失败改为上传中
+        for (uploadFileDataModel * model in _netWorkFailSaveArr) {
+            model.curUploadStateType = uploadStateUploading;
+        }
+        
+        //2、保存到数控库
+        [uploadFileDataModel bg_saveOrUpdateArrayAsync:_netWorkFailSaveArr complete:^(BOOL isSuccess) {
+            
+        }];
+        
+        //重新开始上传
+        [[nasMixUploadManager shareManager] addUploadWithModels:_netWorkFailSaveArr];
+           
+    }
+}
 @end