GithubHelp home page GithubHelp logo

sodownloader's People

Contributors

scfhao 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

sodownloader's Issues

downloadingArray会添加多个相同对象

SODownloadStateWait状态时会插入到downloadingArray中,变为SODownloadStateLoading时,还会再插入downloadingArray中。再问一下为何将NSMutableIndexSet注释掉换成了NSMutableArray来保存任务?

[self.downloadArrayWarpper addObject:item] Thread 1: EXC_BAD_ACCESS

点击下载执行- (void)downloadItem:(id)item autoStartDownload:(BOOL)autoStartDownload 时,遇到内存问题闪退,截图如下:
qq20171214-180339

开发环境:xCode 9.1 iPhone7 IOS 11.1 模拟器

还有不明白为何下面这两个数据对象为何要设置为 readonly ?
@Property (nonatomic, strong, readonly) NSMutableArray *downloadArrayWarpper;
@Property (nonatomic, strong, readonly) NSMutableArray *completeArrayWarpper;

Debug模式下报错,Release模式下没问题?

Debug模式下报错:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<SWDGLoadMap 0x283072c70> valueForUndefinedKey:]: this class is not key value coding-compliant for the key fractionCompleted.'

Release模式完美运行, 为什么呢? 求解作者大大~

运行demo报错.

报错信息如下 :
image
猜测你的方法被自己替换但是没有在demo内实现...

自签名证书

您好:
我想在项目中使用您的SODownloader,但遇到了一个问题:

项目使用了自签名证书,下载地址是https协议的。
除了下载,项目其他https请求也是用的AFNetworking:

let sessionManager = AFHTTPSessionManager(baseURL: url)
    sessionManager.securityPolicy = SHttp.securityPolicy()

通过配置SecurityPolicy来验证自签名证书,但是如果采用initWithSessionConfiguration来初始化AFHTTPSessionManager,正如SODownloader这样,程序会崩溃:

Terminating app due to uncaught exception 'Invalid Security Policy', reason: 'A security policy configured with AFSSLPinningModePublicKey can only be applied on a manager with a secure base URL (i.e. https)'

所以改为用baseURL来初始化AFHTTPSessionManager,这样就可以运行了。

同样,在SODownloader中,我修改了SODownloader的初始化方法initWithIdentifier,传入SecurityPolicy也会出现这个错误。但是没有办法在初始化SODownloader单例时传入URL。所以想请教您有没有解决思路呢?

感谢!
期待您的回信。

Dabby
2019.5.16

__NSCFBackgroundDownloadTask was deallocated while key value observers were still registered with it.

我在模拟器上测试 Demo 时,遇到程序产生异常的情况,这个异常在 AFNetworkingIssue中可以找到记录

我的测试步骤如下(非必现,如果你在测试过程中遇到同样的问题,请在下面评论):

  • 在列表中点击一个未下载的内容启动下载。
  • 使应用进入后台(模拟器 Shift+Command+H)。
  • 停止在模拟器上运行应用。
  • 在 Xcode 上重新 Run 应用。
  • 点击示例中的“音乐列表”、“已下载列表”或“下载设置”

但我在真机上测试 Demo 时,并未遇到该问题,如果你在真机上遇到这个问题,请在下方评论留言告知。

另外,我还发现一个真机与模拟器上后台下载的差别:

真机:iPhone SE、iOS 9.3.3
Xcode:Xcode 8.3.2,模拟器版本为iPhone 7 Plus - iOS 10.3(14E269)

真机效果:在真机上,将多个文件加入下载队列,后台下载完成一个文件后,会调用- application:handleEventsForBackgroundURLSession:completionHandler:方法,进而触发下载队列中后续处于等待下载状态的文件开始下载。
iOS模拟器效果:在模拟器上下载完一个文件后并不调用上述AppDelegate方法,而是出于暂停状态,把程序切回前台后才会继续下载队列中的其他文件。

基于上述的差异,我建议在测试后台下载时尽量使用真机进行测试。可能在不同的模拟器版本或iOS版本上的运行效果会有差异,如果你发现更多的情况,欢迎在下面进行留言。

目前测试到一个问题,关于暂停后的临时文件处理

在任务继续后,读取了临时文件 [url.md5].download 文件
目前测试在任务完成后没有移除这个暂停缓存的文件。
这个文件目前不删除好像有问题,我的操作是这样的:
下载成功后,我就吧成功的文件删除了,以后继续下载,这样每次完成的文件都是有问题的。

当任务直接删除的时候,虽然会把resumeData(.download)文件清空,但是.tmp文件却没有清除

当我们启动一个任务之后,暂停、取消或暂停再取消该任务的时候,该框架会调用cancelByProducingResumeData来进行存储已经下载好的resumeData,并将其写入指定文件夹(文件以.download结尾),但是与于此同时AFNetworking中的NSURLSession也会随着cancelByProducingResumeData生成一个tmp文件(CFNetworkDownload_cWZiWj.tmp 大概是这命名,后来发现是下载中的文件)。

若我们在任务进行的时候,暂停再取消、直接取消该任务的时候,框架会删除掉.download文件,却不会删除.tmp文件,而且.tmp文件也是挺大的(根据下载任务的大小决定)

发现直接调用downloadTask的cancel方法可以移除.tmp文件,但是调用了cancelByProducingResumeData,再调用cancel是无效的。

发现在任务下载的时候,如果暂停任务再取消任务,那么下次再添加该任务的时候会加载上传下载的缓存

原因是当任务暂停住的时候,取消该任务,没有清理掉已经下载好的部分。

SODownloader.m
52行处 添加 - (NSString *)resumePathForItem:(id<SODownloadItem>)item;
306行处 添加

BOOL res = [[NSFileManager defaultManager] removeItemAtPath:[self resumePathForItem:item] error:nil];
NSLog(@"%@", res ? @"沙盒删除成功" : @"沙盒删除失败");

关于baseOnAF2文件

您好:
很高兴您关闭了我上一次提交的issue
我在您的技术文档中看到您 对 AFNetworking 2.x 的支持做了相关的说明,不过我未找到您说的baseOnAF2分支,您是不是已经取消了呢?还是我找错了?
因为使用的项目基于 AFNetworking 2.x 开发的,换到3.0的话改动的会很多
希望您将其填入,谢谢.
非常感谢您能公开这个下载库,我希望在以后的使用中能更好的与您互动.

无法下载

1.下载视频给的网址是在模型里面的#pragma mark - SODownloadItem必须实现的方法
-(NSURL *)so_downloadURL{
NSSLog(@"%@",self.videoUrl);
return [NSURL URLWithString:[NSString stringWithFormat:@“”]];
}这个方法里面赋值的吗 运行出来是空的,这个如何赋值才能下载视频
3.我要想要在下载视频成功的时候保存到数据库这个过程 你这个下载要先给模型,有没有给出视频的链接像AF那样就可以下载了 然后拿到视频的数据,最后把模型以及视频的数据保存到数据库

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.