Explorar o código

1.下载初步完成

huangxiaodong hai 1 ano
pai
achega
c9f391c92f

+ 1 - 0
创维盒子/双子星云手机/AppDelegate/SceneDelegate.m

@@ -98,6 +98,7 @@
         ksharedAppDelegate.window = self.window;
         
         //冷启动
+        [boxDownloadFileManager shareInstance];
         if(connectionOptions.URLContexts != nil){
             _session = session;
             _connectionOptions = connectionOptions;

+ 1 - 0
创维盒子/双子星云手机/Class/Set/previewFile/model/ShareRecordModel.h

@@ -41,6 +41,7 @@ typedef enum{
 
 //下载
 @property (nonatomic, assign) shareDownloadBoxStateType downloadBoxStateType;
+@property (nonatomic, copy) NSString*failMsg;//错误信息
 /** 下载的文件总大小 */
 @property (nonatomic,assign) int64_t totalSize;
 

+ 14 - 3
创维盒子/双子星云手机/Class/Set/uploadFile/receiveView/boxDownloadFileRecordCell.m

@@ -371,7 +371,16 @@
         _fileProgresslabel.text = [[NSString alloc] initWithFormat:@"%@  %@",totalSizeStr,tipStr];
     }
     else if(curShareFileDataModel.downloadBoxStateType == downloadBoxStateFail){
-        _fileProgresslabel.text = [[NSString alloc] initWithFormat:@"%@",totalSizeStr];
+        NSString*tipStr = curShareFileDataModel.failMsg ? curShareFileDataModel.failMsg : @"";
+        NSString *allStr = [[NSString alloc] initWithFormat:@"%@  %@",totalSizeStr,tipStr];
+        
+        NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:allStr];
+        NSRange redRange = NSMakeRange([allStr rangeOfString:tipStr].location, [allStr rangeOfString:tipStr].length);
+        UIColor *noteColor =[UIColor hwColor:@"#DD4E4E" alpha:1.0];
+        [attrStr addAttribute:NSForegroundColorAttributeName value:noteColor range:redRange];
+        //[attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12.0] range:redRange];
+        _fileProgresslabel.attributedText = attrStr;
+
     }
     else{
         _fileProgresslabel.text = [[NSString alloc] initWithFormat:@"%@/%@",didUploadStr,totalSizeStr];
@@ -700,9 +709,11 @@
 
 - (void)downloadItem:(YCDownloadItem *)item downloadedSize:(int64_t)downloadedSize totalSize:(int64_t)totalSize {
     
-    HLog(@"下载中:%lld --- %lld \n%@\n%@",downloadedSize,totalSize,item.downloadURL,_curShareFileDataModel.fileUrl);
+    //解码
+    NSString * urlString = [item.downloadURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    HLog(@"下载中:%lld --- %lld \n%@\n%@",downloadedSize,totalSize,urlString,_curShareFileDataModel.fileUrl);
     
-    if (![item.downloadURL isEqualToString:_curShareFileDataModel.fileUrl]
+    if (![urlString isEqualToString:_curShareFileDataModel.fileUrl]
         ||downloadedSize== totalSize) { // 不是这一个任务
         return;
     }

+ 24 - 22
创维盒子/双子星云手机/Class/Set/uploadFile/receiveView/receiveDownloadRecordTableView.m

@@ -144,12 +144,12 @@
             if (allDownItemArr.count > row && section == 0) {
                 for (YCDownloadItem *item in allDownItemArr) {
                     if (item.downloadStatus != YCDownloadStatusFinished) {
-                        NSString *urlString = model.fileUrl;
-                        NSString *requestURLEncodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+                        //解码
+                        NSString * urlString = [item.downloadURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
                         
-                        HLog(@"%@\n%@",item.downloadURL,model.fileUrl);
+                        HLog(@"%@\n%@",urlString,model.fileUrl);
                         
-                        if([item.downloadURL isEqualToString:requestURLEncodedString]){
+                        if([urlString isEqualToString:model.fileUrl]){
                             cell.item = item;
                             item.delegate = cell;
                             break;
@@ -159,6 +159,10 @@
 
             }
             
+            if(cell.curShareFileDataModel.downloadBoxStateType == downloadBoxStateDone){
+                cell.item.delegate = nil;
+                cell.item = nil;
+            }
             
             if(_isEditType){
                 if([_selectModelArr containsObject:model]){
@@ -729,37 +733,35 @@
 #pragma mark 第一次进来 检测重新下载
 - (void)reDownLoadAgainFun
 {
-    return;
+  
     if(_reDownLoadAgainType){
         return;
     }
     else{
-        //_reDownLoadAgainType = YES;
+        _reDownLoadAgainType = YES;
     }
     
     //重新下载
-    NSMutableArray *handleDownloadArr = [NSMutableArray new];
-    for (ShareFileDataModel * curModel in _downloadingArr) {
-        if(curModel.downloadBoxStateType != downloadBoxStateSuspend)
-        {
-            [handleDownloadArr addObject:curModel];
-            break;//只开一个 完成后再添加先任务
-        }
-    }
+    [YCDownloadManager resumeAllDownloadTask];
     
-    if(handleDownloadArr.count >0){
-        [[boxDownloadFileManager shareInstance] beginDownloadFilesByUrls:handleDownloadArr];
-    }
+//    NSArray *allDownItemArr = [YCDownloadManager downloadList];
+//    for (YCDownloadItem *item in allDownItemArr) {
+//        if (item.downloadStatus != YCDownloadStatusFailed
+//            && item.downloadStatus != YCDownloadStatusFinished) {
+//            //[YCDownloadManager startDownloadWithItem:item];
+//            //[YCDownloadManager resumeDownloadWithItem:item];
+//            [YCDownloadManager startDownloadWithItem:item];
+//        }
+//    }
 }
 
 #pragma mark 下载失败数据回调处理
 - (void)handldDownloadFailDataBy:(YCDownloadItem*)item
 {
-    //解码
-    NSString * urlString = [item.downloadURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
-
     for (ShareFileDataModel*dataModel in _downloadingArr) {
-        //HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
+        NSString * urlString = [item.downloadURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+        
+        HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
         if([urlString isEqualToString:dataModel.fileUrl]){
             //dataModel.totalSize = model.totalSize;
             dataModel.currentSize = item.downloadedSize;
@@ -781,7 +783,7 @@
     NSString * urlString = [item.downloadURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 
     for (ShareFileDataModel*dataModel in _downloadingArr) {
-        //HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
+        HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
         if([urlString isEqualToString:dataModel.fileUrl]){
             dataModel.downloadBoxStateType = downloadBoxStateDone;
             [_downloadDoneArr insertObject:dataModel atIndex:0];

+ 40 - 31
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/boxDownloadFileManager.m

@@ -45,12 +45,31 @@ static boxDownloadFileManager * cur_boxDownloadFileShareInstance = nil;
     //config.uid = @"100006";
     config.uid = [connectDeviceManager shareInstance].DeviceThirdIdMod.data.sn;
     config.maxTaskCount = 1;
-    config.taskCachekMode = YCDownloadTaskCacheModeKeep;
+    config.taskCachekMode = YCDownloadTaskCacheModeDefault;//YCDownloadTaskCacheModeKeep;
     config.launchAutoResumeDownload = NO;
     [YCDownloadManager mgrWithConfig:config];
     [YCDownloadManager allowsCellularAccess:YES];
+    
+    [self delItemInDoneTaskFun];
+}
+
+#pragma mark 删除已经完成和删除文件的任务
+- (void)delItemInDoneTaskFun
+{
+    NSArray *allDownItemArr = [YCDownloadManager downloadList];
+   
+    for (YCDownloadItem *item in allDownItemArr) {
+        if (item.downloadStatus == YCDownloadStatusFinished) {
+            NSString *savePath =  item.savePath;
+            
+            if (![[NSFileManager defaultManager] fileExistsAtPath:savePath]){
+                [YCDownloadManager stopDownloadWithItem:item];
+            }
+        }
+    }
 }
 
+
 //添加保存记录
 - (void)addBoxDownloadRecordFunBy:(NSArray*)arr complete:(custom_complete_B)complete{
     if(arr && arr.count >0 ){
@@ -212,11 +231,12 @@ static boxDownloadFileManager * cur_boxDownloadFileShareInstance = nil;
         //3.取消下载
         NSArray *allDownItemArr = [YCDownloadManager downloadList];
         for (YCDownloadItem *item in allDownItemArr) {
-            NSString *urlString = dataModel.fileUrl;
-            NSString *requestURLEncodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
-            //HLog(@"%@\n%@",item.downloadURL,model.fileUrl);
+            //解码
+            NSString * urlString = [item.downloadURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
             
-            if([item.downloadURL isEqualToString:requestURLEncodedString]){
+            HLog(@"%@\n%@\n%@",urlString,dataModel.fileUrl);
+
+            if([urlString isEqualToString:dataModel.fileUrl]){
                 [YCDownloadManager stopDownloadWithItem:item];
                 //break;
             }
@@ -259,31 +279,18 @@ static boxDownloadFileManager * cur_boxDownloadFileShareInstance = nil;
 //        return;
 //    }
     
-    for (ShareFileDataModel *fileModel in urlArr) {
-
-        NSString *urlString = fileModel.fileUrl;
-        NSString *requestURLEncodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
-//        NSURL *curUrl = [NSURL URLWithString:requestURLEncodedString];
-        // 创建下载任务
-//        [[SGDownloadManager shareManager] downloadWithURL:curUrl
-//                                                 complete:^(NSDictionary *respose, NSError *error) {
-//            HLog(@"%@---%@",respose, error);
-//        }];
-        
-        //[SGDownloadManager shareManager].
-        
-//        [[SGDownloadManager shareManager] downloadWithURL:curUrl fileType:1 fileSize:0 complete:^(NSDictionary *respose, NSError *error) {
-//            HLog(@"%@---%@",respose, error);
-//        }];
-        
-        YCDownloadItem*item = [YCDownloadItem itemWithUrl:requestURLEncodedString fileId:fileModel.fileName];
-        //item.extraData = [VideoListInfoModel dateWithInfoModel:model];
-        [YCDownloadManager startDownloadWithItem:item];
-        
-        //测试 每次只跑一个
-        //break;
-    }
+    if(urlArr && urlArr.count > 0){
+        for (NSInteger i= urlArr.count-1; i>=0; i--) {
+            ShareFileDataModel *fileModel = urlArr[i];
+            
+            NSString *urlString = fileModel.fileUrl;
+            NSString *requestURLEncodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 
+            YCDownloadItem*item = [YCDownloadItem itemWithUrl:requestURLEncodedString fileId:fileModel.fileName];
+            //item.extraData = [VideoListInfoModel dateWithInfoModel:model];
+            [YCDownloadManager startDownloadWithItem:item];
+        }
+    }
 }
 
 #pragma mark 下载完成
@@ -309,7 +316,7 @@ static boxDownloadFileManager * cur_boxDownloadFileShareInstance = nil;
     if(_databaseArr && _databaseArr.count == 3 ){
         NSMutableArray *ingArr = _databaseArr[0];
         for (ShareFileDataModel*dataModel in ingArr) {
-            //HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
+            HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
             if([urlString isEqualToString:dataModel.fileUrl]){
                 [self handleDatabaseArrByDelete:dataModel];
                 
@@ -339,12 +346,14 @@ static boxDownloadFileManager * cur_boxDownloadFileShareInstance = nil;
     if(_databaseArr && _databaseArr.count == 3 ){
         NSMutableArray *ingArr = _databaseArr[0];
         for (ShareFileDataModel*dataModel in ingArr) {
-            //HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
+            HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
             if([urlString isEqualToString:dataModel.fileUrl]){
                 [self handleDatabaseArrByDelete:dataModel];
                 
                 dataModel.downloadBoxStateType = downloadBoxStateFail;
                 
+                dataModel.failMsg = NSLocalizedString(@"File_download_error_404",nil);
+                
                 NSMutableArray *failArr = _databaseArr[2];
                 [failArr insertObject:dataModel atIndex:0];
                 

+ 6 - 6
创维盒子/双子星云手机/CloudPlayer/PlayerViewController+downloadNasFile.m

@@ -60,22 +60,22 @@
         {//可以保持到相册
             UIImage *image = [UIImage imageWithContentsOfFile:pathStr];
             if(image){
-                [self loadImageFinished:image with:pathStr withUrl:item.downloadURL];
+                [self loadImageFinished:image with:pathStr];
             }
                 
         }
         else if([iTools canSaveFileToAlbumByPhoto:NO withName:lastName]){//可以保持到相册
-            [self loadVideoFinishedBy:pathStr withUrl:item.downloadURL];
+            [self loadVideoFinishedBy:pathStr];
             
         }
         else{//保存到文件
-            [self loadOtherDataFinishedBy:pathStr with:item.downloadURL];
+            [self loadOtherDataFinishedBy:pathStr];
         }
     }
 }
 
 
-- (void)loadImageFinished:(UIImage *)image with:(NSString*)fullPath withUrl:(NSString*)url
+- (void)loadImageFinished:(UIImage *)image with:(NSString*)fullPath
 {
     [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
          //写入图片到相册
@@ -99,7 +99,7 @@
     }];
 }
 
-- (void)loadVideoFinishedBy:(NSString*)fullPath withUrl:(NSString*)url
+- (void)loadVideoFinishedBy:(NSString*)fullPath
 {
     NSString*pathStr = fullPath;
     
@@ -127,7 +127,7 @@
 
 
 //下载音频 文件等
-- (void)loadOtherDataFinishedBy:(NSString*)fullPath with:(NSString*)url
+- (void)loadOtherDataFinishedBy:(NSString*)fullPath
 {
     
     NSString*filePath = fullPath;

+ 1 - 0
创维盒子/双子星云手机/zh-Hans.lproj/Localizable.strings

@@ -525,3 +525,4 @@
 "get_sn_msg_202_title" = "设备激活失败";
 "get_sn_msg_202_content" = "检查盒子是否通电通网,若还不能解决,请提供SN联系客服处理!";
 "File_download_Path_other_done"   = "下载到:文件";
+"File_download_error_404"   = "资源已丢失";