美文网首页
iOS断点续传如何获取已下载字节数

iOS断点续传如何获取已下载字节数

作者: 胖子忧郁不起来 | 来源:发表于2023-06-14 16:06 被阅读0次

基于- (void)cancelByProducingResumeData:(void (^)(NSData *resumeData))completionHandler;

[self.task cancelByProducingResumeData:^(NSData * _Nullable resumeData) {

            [resumeData writeToFile:tmpPath atomically:YES];

        }];

//读字节数

NSMutableDictionary *resumeDataDic =[NSPropertyListSerialization propertyListWithData:resumeData options:NSPropertyListImmutable format:nil error:nil];

[resumeDataDic objectForKey:@"NSURLSessionResumeBytesReceived"]

网上很多教程教如何用这个方法实现断点续传,然而实际上我用这个方法并不能获取到已经下载的字节数

最后这样拿到了已下载字节数:

        NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:resumeData];

        NSMutableDictionary *unarchiverDict = [unarchiver decodeObjectForKey:@"NSKeyedArchiveRootObjectKey"];

        [unarchiver finishDecoding];

        NSString*bytesReceived = [unarchiver DictobjectForKey:@"NSURLSessionResumeBytesReceived"];

我折腾的过程:

首先我根据教程,将resumeData保存成.plist文件查看

plist文件

长这样,长这样那当然是无法通过

NSMutableDictionary *resumeDataDic =[NSPropertyListSerialization propertyListWithData:resumeData options:NSPropertyListImmutable format:nil error:nil];

[resumeDataDic objectForKey:@"NSURLSessionResumeBytesReceived"]

获取到下载的字节数啦.

后面突然发现一个关键字:NSKeyedArchiver

这个是数据归档,我是熟悉的,只不过我没有查看过数据归档后的文件长什么样.

所以我就随便归档了一个数据,并保存成.plist文件看看是怎样的.

发现跟resumeData保存成plist文件文档格式是完全一致的

所以苹果是将这个数据先归档再传给我们,那么我们只要解档就可以查看数据了

*解档过程:

首先将文件当成.plist 文件转成字典

NSMutableDictionary *resumeDataDic =[NSPropertyListSerialization propertyListWithData:resumeData options:NSPropertyListImmutable format:nil error:nil];

然后将这个字典打印出来

字典

主要查看下半部分,classname代表这个归档是用什么类打包的, $top对应这个归档是用什么key去encode的    

那么接下来就是常规的解档:

NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiveralloc] initForReadingWithData:resumeData];

NSMutableDictionary *unarchiverDict = [unarchiverdecodeObjectForKey:@"NSKeyedArchiveRootObjectKey"];

[unarchiver finishDecoding];

resumeData字典

从这字典中获取你所需要的下载路径,临时文件,已下载字节数,日期等

相关文章

网友评论

      本文标题:iOS断点续传如何获取已下载字节数

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