Coder Social home page Coder Social logo

onezens / ycdownloadsession Goto Github PK

View Code? Open in Web Editor NEW
455.0 18.0 90.0 6.83 MB

iOS background download video or file lib

License: MIT License

Objective-C 95.82% Swift 2.78% Ruby 1.40%
download background ios background-service background-video objective-c

ycdownloadsession's Introduction

Platform Support CocoaPods Carthage compatible Build Status

通过Cocoapods安装

安装Cocoapods

$ brew install ruby
$ sudo gem install cocoapods

Podfile

分成主要两个包:

  • Core : YCDownloader 只有下载器
  • Mgr : YCDownloader , YCDownloadManager 所有
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

target 'TargetName' do
    pod 'YCDownloadSession', '~> 2.0.2', :subspecs => ['Core', 'Mgr']
end

然后安装依赖库:

$ pod install

提示错误 [!] Unable to find a specification for YCDownloadSession 解决办法:

$ pod repo update master

通过Carthage安装

安装carthage:

brew install carthage

添加下面配置到Cartfile里:

github "onezens/YCDownloadSession"

安装, 然后添加Framework到项目:

carthage update --platform ios

用法

引用头文件

#import <YCDownloadSession.h>

AppDelegate设置后台下载成功回调方法

-(void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler{
    [[YCDownloader downloader] addCompletionHandler:completionHandler identifier:identifier];
}

下载器 YCDownloader

创建下载任务

YCDownloadTask *task = [[YCDownloader downloader] downloadWithUrl:@"download_url" progress:^(NSProgress * _Nonnull progress, YCDownloadTask * _Nonnull task) {
    NSLog(@"progress: %f", progress.fractionCompleted); 
} completion:^(NSString * _Nullable localPath, NSError * _Nullable error) {
    // handler download task completed callback
}];

开始下载任务:

[[YCDownloader downloader] resumeTask:self.downloadTask];

暂停下载任务:

[[YCDownloader downloader] pauseTask:self.downloadTask];

删除下载任务:

[[YCDownloader downloader] cancelTask:self.downloadTask];

异常退出应用后,恢复之前正在进行的任务的回调

/**
 恢复下载任务,继续下载任务,主要用于app异常退出状态恢复,继续下载任务的回调设置

 @param tid 下载任务的taskId
 @param progress 下载进度回调
 @param completion 下载成功失败回调
 @return 下载任务task
 */
- (nullable YCDownloadTask *)resumeDownloadTaskWithTid:(NSString *)tid progress:(YCProgressHandler)progress completion:(YCCompletionHandler)completion;

下载任务管理器YCDownloadManager

设置任务管理器配置

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true).firstObject;
path = [path stringByAppendingPathComponent:@"download"];
YCDConfig *config = [YCDConfig new];
config.saveRootPath = path;
config.uid = @"100006";
config.maxTaskCount = 3;
config.taskCachekMode = YCDownloadTaskCacheModeKeep;
config.launchAutoResumeDownload = true;
[YCDownloadManager mgrWithConfig:config];

下载任务相关通知

//某一个YCDownloadItem下载成功通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(downloadTaskFinishedNoti:) name:kDownloadTaskFinishedNoti object:nil];
//mgr 管理的所有任务完成通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(downloadAllTaskFinished) name:kDownloadTaskAllFinishedNoti object:nil];

开始下载任务

YCDownloadItem *item = [YCDownloadItem itemWithUrl:model.mp4_url fileId:model.file_id];
item.extraData = ...;
[YCDownloadManager startDownloadWithItem:item];

下载相关控制

/**
暂停一个后台下载任务
     
@param item 创建的下载任务item
*/
+ (void)pauseDownloadWithItem:(nonnull YCDownloadItem *)item;
    
/**
继续开始一个后台下载任务
     
@param item 创建的下载任务item
*/
+ (void)resumeDownloadWithItem:(nonnull YCDownloadItem *)item;
    
/**
删除一个后台下载任务,同时会删除当前任务下载的缓存数据
     
@param item 创建的下载任务item
*/
+ (void)stopDownloadWithItem:(nonnull YCDownloadItem *)item;

蜂窝煤网络访问控制

/**
是否允许蜂窝煤网络下载,以及网络状态变为蜂窝煤是否允许下载,必须把所有的downloadTask全部暂停,然后重新创建。否则,原先创建的
下载task依旧在网络切换为蜂窝煤网络时会继续下载
     
@param isAllow 是否允许蜂窝煤网络下载
*/
+ (void)allowsCellularAccess:(BOOL)isAllow;
    
/**
获取是否允许蜂窝煤访问
*/
+ (BOOL)isAllowsCellularAccess;

使用效果图

单文件下载测试

单文件下载测试

多视频下载测试

多视频下载测试

下载通知

下载通知

ycdownloadsession's People

Contributors

onezens avatar tm-frankd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ycdownloadsession's Issues

使用有问题

recreate Session success
2018-01-05 15:11:40.523857+0800 PoineTech[1567:363719] invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. This message will only appear once per execution.
这是我报错原因,我是在加入下载后,立即断网络,可是进去下载页面去启动下载任务,就崩溃到YCDownloadSession.m文件夹-(void)resumeDownloadTask:(YCDownloadTask *)task这个方法处: NSURLSessionDownloadTask *downloadTask = [self.session downloadTaskWithRequest:request];

bug 反馈

手机信息 (please complete the following information):

  • Device: [e.g. iPhone6] [e.g. iPhone8] [e.g. iPhoneX]
  • OS: [e.g. iOS8.3][e.g. iOS10.3.2][e.g. iOS11.3]
  • YCDownloadSession Version [e.g. 1.2.5]

如何复现
详细的描述如何复现返回的问题?并且参照demo,在demo里同样的操作是否会复现?

  1. 到下载页面
  2. 点击下载
  3. App进入后台,频繁切换WiFi,每次切换后进入App

错误或者奔溃信息
出现2个task下载一个任务的情况,控制台会打印2个下载进度,导致下载出错或者失败,UI异常。

这个bug是偶现的,且概率很大,demo里一样会复现。

[Bug] 文件大小计算错误

#define kCommonUtilsGigabyte (1024 * 1024 * 1024)
#define kCommonUtilsMegabyte (1024 * 1024)
#define kCommonUtilsKilobyte 1042

应该改为

#define kCommonUtilsGigabyte (1000 * 1000 * 1000)
#define kCommonUtilsMegabyte (1000 * 1000)
#define kCommonUtilsKilobyte 1000

据说在iOS上是1000不是1024

实际操作也是这样

从后台返回到App下载状态混乱,会出现全部任务同时下载的情况

手机信息 (please complete the following information):

  • Device: [e.g. iPhoneX]
  • OS: [e.g. iOS11.4]
  • YCDownloadSession Version 最新版

如何复现
详细的描述如何复现返回的问题?并且参照demo,在demo里同样的操作是否会复现?
添加多个任务到下载列表,设置同时最大下载数为3,然后退到后台,等几分钟进入App,会出现全部任务同时下载的情况并且有可能会出现状态混乱的情况

错误或者奔溃信息
复制粘贴相关信息或者截图

友情提示
发生问题,或者有疑问时,请仔细参照demo的实现逻辑。为了能够快速解决,请严格按照本模板描述,并且将你的问题在demo的复现过程详细描述出来。

有能力的同学,请自行debug问题的原因,然后进行反馈。或者找到解决办法后发起pull request。

关掉应用再次打开任务列表全部变为暂停状态,一路追踪下来定位到URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error

手机信息 (please complete the following information):

  • Device: [e.g. iPhone6s]
  • OS: [e.g. iOS11.2.1]
  • YCDownloadSession Version [最新版]

如何复现
详细的描述如何复现返回的问题?并且参照demo,在demo里同样的操作是否会复现?

  1. 重复关掉开启应用偶尔出现任务列表全部变为暂停状态,然后任务就无法被下载了,新增的任务一样无法下载

错误或者奔溃信息
在使用NSURLSession进行后台下载的时候,有时候didCompleteWithError方法会出现 Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory" UserInfo={NSErrorFailingURLStringKey=http://********,

d56c4696-6a45-4e82-9c69-088d50267f5a

求指教

我测试的时候发现了些问题,表示很不解:
1、APP在下载过程中突然崩溃了,如何去保存completionHandler()?

2、在- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler 中,好像并不需要创建参照? 我发现没创建也是OK的,不知道和创建了有什么区别

3、如果我创建了多个NSURLSession,到后台后是不是要保存多份completionHandler()?

4、我重新进入APP的时候,创建NSURLSession就自动给我继续下载了,导致我在逻辑处理出了问题,怎么让它不自动下载?

下载停止情况

1.建议博主把本地通知的名称更改一下,改换成 配置后台下载 identifier 的形式.
2.设置最大下载数是不是必须的.有这么一种情况,当添加了两个下载任务,未设置最大下载数,显示只有一个在刷新的下载.这个时候退到后台,我们什么都不管该APP,在某个时候进去,早先开始下载的那个已经下载完成了,剩下一个不动了.必须手动点击两次才刷新下载.进去的时候是显示了启动页的,时间不短,是不是因为后台杀死了,下载单例已经干掉了?下载文件大小200M-300M 不等.而且有的时候,通过点击启动的下载的文件有不完整的情况.

非手动杀死app(崩溃或者stop the running scheme or application),出现bug

手机信息 (please complete the following information):

  • Device: iPad,iPhone所有型号
  • OS: [e.g. iOS8.1]
  • YCDownloadSession Version [1.2.5]

如何复现
1、运行程序,开始一个下载
2、停止程序运行(stop the running scheme or application),非手动杀死app,所以后台任务继续下载
3、重新启动程序 ,开始相同的下载(此时原来的后台任务还在下载)
4、- (void)URLSession:(NSURLSession *)session
downloadTask:(NSURLSessionDownloadTask *)downloadTask
didWriteData:(int64_t)bytesWritten
totalBytesWritten:(int64_t)totalBytesWritten
totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
在此方法中,有两个downloadTask 根据 YCDownloadTask *task = [self getDownloadTaskWithUrl:[YCDownloadTask getURLFromTask:downloadTask]];找到了同一个YCDownloadTask,task.downloadedSize出现异常,表现下载进度闪烁

这样,如果出现崩溃现象,再次启动就可能出现这个bug!请问怎样处理这种bug?

下载功能,断网联网多次出现下载失败之后,重启APP再次进入界面闪退

手机信息 (please complete the following information):

  • Device: 6P
  • OS:iOS10.3
  • YCDownloadSession Version 最新版本

如何复现
下载功能,断网联网多次出现下载失败之后,重启APP再次进入下载列表界面闪退

错误或者奔溃信息
Attempted to create a task in a session that has been invalidated
Trapped uncaught exception 'NSGenericException', reason: 'Task created in a session that has been invalidated'

友情提示
断点在了 YCDownloadSession.m的404行
NSURLSessionDownloadTask *downloadTask = [self.session downloadTaskWithRequest:request];

多文件下载时不正常

手机信息 (please complete the following information):

  • Device: iPhone6
  • OS: iOS 11.2
  • YCDownloadSession Version 1.2.6

如何复现
详细的描述如何复现返回的问题?并且参照demo,在demo里同样的操作是否会复现?

  1. 点击多个下载之后,进入查看缓存界面,有的显示正在下载,但是UI不更新,提示错误

Uploading image.png…

点击cell的时候报错
Error: resource not support resume, because reponse headers not have the filed of 'Accept-Ranges' and 'ETag' !

app 后台运行问题

手机信息 (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS9.3]
  • YCDownloadSession Version [最新版本]

如何复现
开启下载任务后,APP切换到后台,在唤醒以后,下载任务不继续。

demo 也是这个问题。

防盗链url 改变下载路径

您好,请问我们公司的下载url 是加了防盗链的,一个小时改变一次,我想问一下,我使用YCDownloadSession 的时候应该如何在下载失败的时候判断过期,然后重新生成下载呢,或者有没有更简单一点的办法呢?

问题有点多

1、有fileid不能暂停、恢复
2、删除没有删掉文件
3、后台下载不能继续下载等待任务
4、多次暂停恢复,直接下载就成功了
5、正在下载闪退后,重新点下载没有断点续下

删除任务后,被删除的任务会在正在下载的任务中出现并且不能重新下载

手机信息 (please complete the following information):

  • Device: [e.g. iPhone6] iPhone 8 Plus
  • OS: [e.g. iOS8.1] iOS 11.3.1
  • YCDownloadSession Version [e.g. 22] 最新版本

如何复现
详细的描述如何复现返回的问题?并且参照demo,在demo里同样的操作是否会复现?

  1. 到xx页面
  2. 点击xx
  3. 出现xx错误

错误或者奔溃信息
复制粘贴相关信息或者截图

友情提示
发生问题,或者有疑问时,请仔细参照demo的实现逻辑。为了能够快速解决,请严格按照本模板描述,并且将你的问题在demo的复现过程详细描述出来。

有能力的同学,请自行debug问题的原因,然后进行反馈。或者找到解决办法后发起pull request。

Bug

连续切换网络环境返回app,会出现2个task同时下载一个item的情况,进度就会闪2个task下载的进度

非200处理

感谢分享!!看了几天源代码,有一些问题指出来,望修正:
1.下载没有对非200的情况进行处理(没有对接收到响应这个回调进行处理),导致下载地址是错误的还能把错误的信息写入文件。
2.我用的版本是YCDownloadSession(1.2.3),在初始化Session的时候并没有暂停所有下载,导致手动杀掉app会暂停,但是通过xcode杀掉或者程序crash下次启动app状态还是正在下载。
3.类型转换有问题,content-length是long long类型,直接把已下载大小(downloadedSize)和文件大小(fileSize)用nsinter类型强转,这样导到32位机型nsinter会超出取值范围,只能下载2G以下的视频。
4.没有对302重定向进行处理

App退到后台task 调用dealloc,任务失败

手机信息 (please complete the following information):

  • Device: [e.g. iPhoneX]
  • OS: [e.g. iOS11.4]
  • YCDownloadSession Version [1.2 6]

如何复现
demo也会出现这个问题 在下载过程中直接进入后台 任务dealloc了

错误或者奔溃信息
复制粘贴相关信息或者截图

友情提示
发生问题,或者有疑问时,请仔细参照demo的实现逻辑。为了能够快速解决,请严格按照本模板描述,并且将你的问题在demo的复现过程详细描述出来。

有能力的同学,请自行debug问题的原因,然后进行反馈。或者找到解决办法后发起pull request。

iOS11 bug

iOS11 bug 因为ios11上的 resumeData 有改动 改了这个就好了

针对一些比较奇怪的下载地址,需要做特殊判断

例如这个下载地址:http://61.131.79.30:8085/uer-repo1/8fc9b66e13344182bc2a9ff4a188512.xlsx?response-content-disposition=attachment%3Bfilename%3D%E6%96%B0%E5%BB%BA%20Microsoft%20Excel%20%E5%B7%A5%E4%BD%9C%E8%A1%A8.xlsx&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20180516T084350Z&X-Amz-SignedHeaders=host&X-Amz-Expires=43200&X-Amz-Credential=NRJ4WJKDYWIIM0993CF6%2F20180516%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=d61bb81a330e47834011ed5b755db7110cc8556017ab13cf807c313e9f385dd6

再经过 - (NSString *)getPathExtensionWithUrl:(NSString *)url这个方法的时候,不能取到正确的后缀名

打断点发现 经过NSString *pathExtension = [url pathExtension];获取到的文件后缀变成了
xlsx&response-content-...(省略)

也就是说 ? 变成了 & , 虽然我也搞不懂什么问题...

所以修改了一下 - (NSString *)getPathExtensionWithUrl:(NSString *)url 这个方法

+ (NSString *)getPathExtensionWithUrl:(NSString *)url {
    NSString *pathExtension = [url pathExtension];
    NSArray *pathExtensionArray = [pathExtension componentsSeparatedByString:@"&"];
    //过滤url中的参数,取出单独文件名
    NSRange range = [pathExtension rangeOfString:@"?"];
    if (range.location>0 && range.length == 1) {
        pathExtension = [pathExtension substringToIndex:range.location];
    } else if (pathExtensionArray.count > 0 ) {
        pathExtension = pathExtensionArray.firstObject;
    }
    return pathExtension;
}

我一直想让它 出现那种在通知栏上 在appdelegate 里面断点打上却没有走 。 跑的就是这个开源的demo 我换了个mp4的视频,有40分钟的样子

手机信息 (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • YCDownloadSession Version [e.g. 22]

如何复现
详细的描述如何复现返回的问题?并且参照demo,在demo里同样的操作是否会复现?

  1. 到xx页面
  2. 点击xx
  3. 出现xx错误

错误或者奔溃信息
复制粘贴相关信息或者截图

友情提示
发生问题,或者有疑问时,请仔细参照demo的实现逻辑。为了能够快速解决,请严格按照本模板描述,并且将你的问题在demo的复现过程详细描述出来。

有能力的同学,请自行debug问题的原因,然后进行反馈。或者找到解决办法后发起pull request。

Session程序崩溃后,重新启动程序!后台下载还是在进行

Session程序崩溃后,重新启动程序!后台下载还是在进行,这样我开始原来的下载,会有两个相同的NSURLSessionDownloadTask进行,但是他们都可以找到 YCDownloadTask *task = [self getDownloadTaskWithUrl:[YCDownloadTask getURLFromTask:downloadTask]];同一个YCDownloadTask,如何避免这种问题?

清除缓存

下载PDF、Word、Excel、TXT,下载完成后,在其他页面清除缓存,调用[FotileDownloadManager videoCacheSize]获取缓存大小适中为0,这个方法只能获取视频缓存大小么?

使用这个库在for循环里进行多次下载操作会崩溃

手机信息 (please complete the following information):

  • Device: [iPhone6P]
  • OS: [ iOS11.2]
  • YCDownloadSession Version [ 1.2.6]

如何复现
调用

  • (void)startDownloadWithUrl:(NSString *)downloadURLString fileName:(NSString *)fileName imageUrl:(NSString *)imagUrl fileId:(NSString *)fileId;
    这个方法,进行多文件下载时会崩溃。
    具体操作如下:如果要进行多个文件的下载,比如10个文件,写了个for循环,在for循环里面反复调用这个方法,程序就会崩溃。
    然而单独只调用一次这个方法程序不会出错。
    错误或者奔溃信息
    复制粘贴相关信息或者截图
    2018-06-29 16:02:45.879763+0800 BoardCast[822:182922] Attempted to create a task in a session that has been invalidated 2018-06-29 16:02:45.885497+0800 BoardCast[822:182922] dynamic_cast error 2: One or more of the following type_info's has hidden visibility. They should all have public visibility. N10__cxxabiv116__shim_type_infoE, id, N10__cxxabiv117__pbase_type_infoE. 2018-06-29 16:02:45.885675+0800 BoardCast[822:182922] dynamic_cast error 2: One or more of the following type_info's has hidden visibility. They should all have public visibility. N10__cxxabiv116__shim_type_infoE, id, N10__cxxabiv117__pbase_type_infoE. 2018-06-29 16:02:46.008594+0800 BoardCast[822:182922] [Bugly] Trapped uncaught exception 'NSGenericException', reason: 'Task created in a session that has been invalidated' ( 0 CoreFoundation 0x000000018550a37c <redacted> + 148 1 libobjc.A.dylib 0x0000000184750528 objc_exception_throw + 56 2 CFNetwork 0x0000000185b46060 <redacted> + 0 3 CFNetwork 0x0000000185b44f68 <redacted> + 36 4 CFNetwork 0x0000000185b43790 <redacted> + 76 5 libdispatch.dylib 0x000000010492128c _dispatch_client_callout + 16 6 libdispatch.dylib 0x000000010492ebc8 _dispatch_queue_barrier_sync_invoke_and_complete + 120 7 CFNetwork 0x0000000185b436f0 <redacted> + 144 8 CFNetwork 0x0000000185b44ed0 <redacted> + 188 9 YCDownloadSession 0x0000000103cdbf84 -[YCDownloadSession downloadTaskWithUrl:] + 168 10 YCDownloadSession 0x0000000103cdc060 -[YCDownloadSession startNewTaskWithUrl:fileId:delegate:] + 144 11 YCDownloadSession 0x0000000103cdae2c -[YCDownloadSession startDownloadWithUrl:fileId:delegate:] + 640 12 YCDownloadSession 0x0000000103cdab3c -[YCDownloadSession startDownloadWithUrl:fileId:delegate:priority:] + 164 13 YCDownloadSession 0x0000000103cd70b0 -[YCDownloadManager startDownloadWithItem:priority:] + 504 14 YCDownloadSession 0x0000000103cd7594 -[YCDownloadManager startDownloadWithUrl:fileName:imageUrl:fileId:] + 516 15 YCDownloadSession 0x0000000103cd5c9c +[YCDownloadManager startDownloadWithUrl:fileName:imageUrl:fileId:] + 224 16 BoardCast 0x0000000100d85530 _T09BoardCast17DownloadManagerYCC17startDownLoadTaskyAA9LuboModelC4lubo_tF + 392 17 BoardCast 0x0000000100c8d508 _T09BoardCast27BatchDownloadViewControllerC0cd6BottomE12DidTapButtonySo8UIButtonC6button_tF + 1660 18 BoardCast 0x0000000100c8eb48 _T09BoardCast27BatchDownloadViewControllerCAA0cd6BottomE8DelegateA2aDP0cdgE12DidTapButtonySo8UIButtonC6button_tFTW + 36 19 BoardCast 0x0000000100a1aec0 _T09BoardCast23BatchDownloadBottomViewC21downloadButtonClicked33_E3998E7797A2F12E24816508E55B02E6LLySo8UIButtonC6sender_tF + 348 20 BoardCast 0x0000000100a1af30 _T09BoardCast23BatchDownloadBottomViewC21downloadButtonClicked33_E3998E7797A2F12E24816508E55B02E6LLySo8UIButtonC6sender_tFTo + 72 21 UIKit 0x000000018eaf56b4 <redacted> + 96 22 UIKit 0x000000018eaf5634 <redacted> + 80 23 UIKit 0x000000018eae01dc <redacted> + 440 24 UIKit 0x000000018eaf4f28 <redacted> + 576 25 UIKit 0x000000018f150610 <redacted> + 4280 26 UIKit 0x000000018f14bbc0 <redacted> + 1224 27 CoreFoundation 0x00000001854b1edc <redacted> + 32 28 CoreFoundation 0x00000001854af894 <redacted> + 412 29 CoreFoundation 0x00000001854afe50 <redacted> + 1292 30 CoreFoundation 0x00000001853cfe58 CFRunLoopRunSpecific + 436 31 GraphicsServices 0x000000018727cf84 GSEventRunModal + 100 32 UIKit 0x000000018eb2467c UIApplicationMain + 236 33 BoardCast 0x0000000100eb7950 main + 76 34 libdyld.dylib 0x0000000184eec56c <redacted> + 4 ) 2018-06-29 16:02:47.054093+0800 BoardCast[822:182922] *** Terminating app due to uncaught exception 'NSGenericException', reason: 'Task created in a session that has been invalidated' *** First throw call stack: (0x18550a364 0x184750528 0x185b46060 0x185b44f68 0x185b43790 0x10492128c 0x10492ebc8 0x185b436f0 0x185b44ed0 0x103cdbf84 0x103cdc060 0x103cdae2c 0x103cdab3c 0x103cd70b0 0x103cd7594 0x103cd5c9c 0x100d85530 0x100c8d508 0x100c8eb48 0x100a1aec0 0x100a1af30 0x18eaf56b4 0x18eaf5634 0x18eae01dc 0x18eaf4f28 0x18f150610 0x18f14bbc0 0x1854b1edc 0x1854af894 0x1854afe50 0x1853cfe58 0x18727cf84 0x18eb2467c 0x100eb7950 0x184eec56c) libc++abi.dylib: terminating with uncaught exception of type NSException

swift编译不通过

类方法 downloadSession 和 属性downloadSession冲突了,把单例方法名改一下

修改下载路径

现在下载的路径是在沙盒里的cache里?
可以修改为document文件夹吗

数据缓存后丢失

手机信息 (please complete the following information):

  • Device: [e.g. iPhone6s]
  • OS: [e.g. iOS11.4]
  • YCDownloadSession Version [最新版]

如何复现
数据下载后第二天莫名其妙不存在了

新需求!!

如果下载URL再暂停下载后,有时候会变化,我看代码里YCDownloadTask就会获取不到了,因为YCDownloadTask是根据下载url和fileId标记的,URL变化会影响断点续传吗,按理说请求头里的那2个参数正确,就可以吧,我改变YCDownloadTask的taskId的存储方式可以吗

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.