美文网首页
七牛SDK上传取消的实现

七牛SDK上传取消的实现

作者: LV大树 | 来源:发表于2021-05-20 15:14 被阅读0次
    ----   shouldCancelHandler:(BOOL (^)(void))cancelHandler
{
...
 QNUploadOption *option = [[QNUploadOption alloc]initWithMime:nil progressHandler:^(NSString *key, float percent) {
        NSLog(@"key====%@,  percent=====%.2f", key, percent);
        if (progressHandler) {
            progressHandler(key,percent);
        }
    }  params:nil checkCrc:NO cancellationSignal:cancelHandler];
    
    
    QNUploadManager *manager = [[QNUploadManager alloc] init];
    [manager putData:data key:nil token:token complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
        if (resp != nil &&
            [resp isKindOfClass:[NSDictionary class]] &&
            resp[@"key"]) {
            callback (YES,[resp objectForKey:@"key"]);
        } else {
            callback (NO,@"上传七牛失败");
        }
    } option:option];
....
}

直接上代码吧。
QNUploadManager 管理每一个上传任务。其中option 有个cancellationSignal的入参block,该block就是我们处理能否取消任务的关键,block是带返回值的,无参。
我的看法是,上传过程中会定期读取该block的值,一定发现block== YES(取消),则任务取消。

那么为何要这样设计呢?

相关文章

网友评论

      本文标题:七牛SDK上传取消的实现

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