iOS 断点续传 —ASI

原创 2013年12月06日 11:49:11

参照网上的例子做的一次总结 切实可行

.h文件中

创建一个进度条,由ASI托管,添加开始和暂停两个事件   

#import <UIKit/UIKit.h>
#import "ASIHTTPRequest.h"
#import "ASINetworkQueue.h"

@interface ViewController : UIViewController<ASIHTTPRequestDelegate,ASIProgressDelegate>
{
    UIProgressView * _progressView;
}

@property (nonatomic,retain) UIProgressView* progressView;
@property (nonatomic,retain) ASINetworkQueue * asiNetQueue;
@property (nonatomic,retain) ASIHTTPRequest * asiHttpRequest;
- (IBAction)startClick:(id)sender;
- (IBAction)pauseClick:(id)sender;

.m文件中

@synthesize progressView=_progressView;
@synthesize asiNetQueue=_asiNetQueue;
@synthesize asiHttpRequest=_asiHttpRequest;

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    _progressView=[[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
    _progressView.frame=CGRectMake(10, 100, 300, 0);
    _progressView.progress=0.0f;
    
    
    [self.view addSubview:_progressView];
    [_progressView release];
    
    _asiNetQueue=[[ASINetworkQueue alloc] init];//开启队列
    [_asiNetQueue reset];//nil
    _asiNetQueue.showAccurateProgress=YES;
    [_asiNetQueue go];
}
//开始下载事件:
- (IBAction)startClick:(id)sender {
    NSURL * url=[NSURL URLWithString:@"http://fdfs.xmcdn.com/group1/M00/24/5E/wKgDrVH26tnQ3MJWAJJPLsXTccM542.mp3"];
    _asiHttpRequest=[ASIHTTPRequest requestWithURL:url];
    _asiHttpRequest.delegate=self;
    _asiHttpRequest.downloadProgressDelegate=self;
    
    //保存路径
    NSString * savePath=[NSHomeDirectory() stringByAppendingPathComponent:@"test.mp3"];
    
    //临时路径,开在开始后,先将已下载的数据存在临时文件中,任务完成后,将临时文件拷贝到 savePath
    NSString * temp=[NSHomeDirectory() stringByAppendingPathComponent:@"temp"];
    NSString * tempPath=[temp stringByAppendingPathComponent:@"test.mp3"];
    NSLog(@"%@",temp);
    //创建文件管理器
    NSFileManager * fileManager=[NSFileManager defaultManager];
    //判断temp文件夹是否存在,如果没有  创建
    BOOL fileExist=[fileManager fileExistsAtPath:temp];
    if (!fileExist) {
        [fileManager createDirectoryAtPath:temp withIntermediateDirectories:YES attributes:nil error:nil];
    }
    
    [_asiHttpRequest setDownloadDestinationPath:savePath];
    [_asiHttpRequest setTemporaryFileDownloadPath:tempPath];
    
    _asiHttpRequest.allowResumeForFileDownloads=YES;
    [_asiHttpRequest setDownloadProgressDelegate:self];
    
    //给当前请求设置一个标示,便于队列中有多个下载任务时 找到当前下载任务
    [_asiHttpRequest setUserInfo:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:100] forKey:@"downLoadID"]];    
    //加入队列
    [_asiNetQueue addOperation:_asiHttpRequest];
}
//暂停下载
- (IBAction)pauseClick:(id)sender {
    for (ASIHTTPRequest *request in [_asiNetQueue operations]) {
        //查看userinfo信息
        NSInteger downLoadID = [[request.userInfo objectForKey:@"downLoadID"] intValue];
        if (100 == downLoadID) {
            //判断ID是否匹配 
            //暂停匹配对象 
            [request clearDelegatesAndCancel];
        }
    }
}
//滚动条的代理方法 
-(void)setProgress:(float)newProgress
{
    [_progressView setProgress:newProgress];
}






                    

ASI进度追踪和断点续传

  • 2013年11月20日 16:24
  • 206KB
  • 下载

IOS开发—网络请求、上传下载、断点续传(NSURLSession)

简单说明在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作。 NSURLSessionCo...
  • Lotheve
  • Lotheve
  • 2016年03月06日 20:51
  • 1411

ios 断点续传下载例子

  • 2012年05月28日 15:03
  • 350KB
  • 下载

Android断点续传下载—hg

  • 2016年04月04日 16:00
  • 99KB
  • 下载

Retrofit2的再封装实战—多线程下载与断点续传(三)

流程图 回忆之前文章提到的,我们将需要下载的任务构造成一个List传入DownLoadManager中,DownLoadManager调用方法downLoad生成DownLoad...

断点续传-ios

  • 2015年06月18日 21:52
  • 12KB
  • 下载

Android学习记录(5)—在java中学习多线程下载之断点续传②

在上一节中我们学习了在java中学习多线程下载的基本原理和基本用法,我们并没有讲多线程的断点续传,那么这一节我们就接着上一节来讲断点续传,断点续传的重要性不言而喻,可以不用重复下载,也可以节省时间,实...

【IOS】AFNetWorking断点续传的DEMO

  • 2015年11月14日 21:33
  • 695KB
  • 下载

ios开发 断点续传

  • 2012年08月21日 17:58
  • 706KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 断点续传 —ASI
举报原因:
原因补充:

(最多只允许输入30个字)