重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章给大家分享的是有关如何解决iOS11中断点续传的bug的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联公司主要从事成都网站设计、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务和田,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108iOS11发布之后,可能很多带有下载功能的APP都会躺枪。因为原先用来做断点续传的resumeData里带上了一个新值,而这个新值的出现,会导致几次暂停操作后下载任务task读取数据不对,而且在文件还没下载完时就会调用下载完成时的代理方法,导致下载出错。下面就来说说解决的办法。
第一种方法:暂停时不调用[task cancelByProducingResumeData:^(NSData *resumeData){ }];而是调用suspend线程挂起的方法,可解决这个问题。
第二种方法:去除resumeData里的新值。
1:第一步:先把resumeData转成string。
NSString *dataString =[[NSString alloc]initWithData:resumeData encoding:NSUTF8StringEncoding];
2:第二步:再去除里面的新值
NSString *string =[self cleanResumeDataWithString:dataString]; -(NSString *)cleanResumeDataWithString:(NSString *)dataString { if([dataString containsString:@"NSURLSessionResumeByteRange "]) { NSRange rangeKey = [dataString rangeOfString:@"NSURLSessionResumeByteRange "]; NSString *headStr = [dataString substringToIndex:rangeKey.location]; NSString *backStr = [dataString substringFromIndex:rangeKey.location]; NSRange rangeValue = [backStr rangeOfString:@"\n\t"]; NSString *tailStr = [backStr substringFromIndex:rangeValue.location + rangeValue.length]; dataString = [headStr stringByAppendingString:tailStr]; } return dataString; }
第3步:把string转成新的resumeData。
resumeData =[string dataUsingEncoding:NSUTF8StringEncoding];
后记:第一种方法相对简单,第二种相对有难度些。小伙伴可根据情况酌情使用。
感谢各位的阅读!关于“如何解决iOS11中断点续传的bug”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。