美文网首页
iOS 最简功能的视频下载保存

iOS 最简功能的视频下载保存

作者: 你好哈喽哈喽 | 来源:发表于2021-06-24 14:12 被阅读0次

    //控件 属性
    @property (nonatomic, strong) UIButton *cancelBtn;
    @property (nonatomic, strong) UIButton *sendBtn;
    @property (nonatomic, strong) CircleProgressView *progressView;
    @property (nonatomic, strong) VedioDetailModel *model;
    @property(nonatomic,strong)NSURLSessionDownloadTask *downloadTask;

    /** 下载视频 */

    • (void)startDownLoadVedioWithModel:(VedioDetailModel *)model {
      _model = model;
      NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
      NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue mainQueue]];

      self.downloadTask = [session downloadTaskWithURL:[NSURL URLWithString:model.vedioUrl]];
      [self.downloadTask resume];
      }

    pragma mark NSSessionUrlDelegate

    • (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
      didWriteData:(int64_t)bytesWritten
      totalBytesWritten:(int64_t)totalBytesWritten
      totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
      {
      //下载进度
      CGFloat progress = totalBytesWritten / (double)totalBytesExpectedToWrite;
      dispatch_async(dispatch_get_main_queue(), ^{
      //进行UI操作 设置进度条
      [self.progressView roundProgressView:progress];
      });
      }
      //下载完成 保存到本地相册

    • (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
      didFinishDownloadingToURL:(NSURL *)location
      {
      //1.拿到cache文件夹的路径
      NSString *cache=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];
      //2,拿到cache文件夹和文件名
      NSString *file=[cache stringByAppendingPathComponent:downloadTask.response.suggestedFilename];

      [[NSFileManager defaultManager] moveItemAtURL:location toURL:[NSURL fileURLWithPath:file] error:nil];
      //3,保存视频到相册
      if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(file)) {
      //保存相册核心代码
      UISaveVideoAtPathToSavedPhotosAlbum(file, self, nil, nil);
      }
      }

    //控件本身的代理方法 更新控件样子

    • (void)progressOverAndChangeViewContents {
      MyLog(@"下载完成");
      self.sendBtn.enabled = YES;

      self.titleBtn.enabled = NO;
      [self.titleBtn setTitle:@"视频已下载到本地" forState:UIControlStateNormal];
      self.contentBtn.enabled = NO;
      [self.contentBtn setTitle:@"商品简介已复制" forState:UIControlStateNormal];

    }

    相关文章

      网友评论

          本文标题:iOS 最简功能的视频下载保存

          本文链接:https://www.haomeiwen.com/subject/ergwyltx.html