SODownloader
SODownloader copied to clipboard
A simple downloader base on AFNetworking
``` - (void)applicationDidBecomeActive:(NSNotification *)notification { double systemVersion = [[UIDevice currentDevice].systemVersion doubleValue]; if (systemVersion >= 12.0) { [[NSNotificationCenter defaultCenter]postNotificationName:UIApplicationDidEnterBackgroundNotification object:nil]; } } ``` 谢谢!
无网络时,还提示下载中状态,有没有办法提示下载失败或者其他处理呢?
AFNetworking有通知,可以在应用被杀死时获取下载任务的resumeData,原来的applicationWillTerminate没有用。第一次pull,如果操作不当,还请指正。
查看源码得知 框架中注册`applicationWillTerminate`的通知执行`cancelByProducingResumeData `,但是`applicationWillTerminate`这个方法是不执行子线程的任务的... 不知是否有好的解决方案
当我们启动一个任务之后,暂停、取消或暂停再取消该任务的时候,该框架会调用`cancelByProducingResumeData`来进行存储已经下载好的resumeData,并将其写入指定文件夹(文件以.download结尾),但是与于此同时AFNetworking中的NSURLSession也会随着`cancelByProducingResumeData`生成一个tmp文件(CFNetworkDownload_cWZiWj.tmp 大概是这命名,后来发现是下载中的文件)。 若我们在任务进行的时候,暂停再取消、直接取消该任务的时候,框架会删除掉.download文件,却不会删除.tmp文件,而且.tmp文件也是挺大的(根据下载任务的大小决定) 发现直接调用downloadTask的`cancel`方法可以移除.tmp文件,但是调用了`cancelByProducingResumeData`,再调用`cancel`是无效的。
点击下载执行- (void)downloadItem:(id)item autoStartDownload:(BOOL)autoStartDownload 时,遇到内存问题闪退,截图如下:  开发环境:xCode 9.1 iPhone7 IOS 11.1 模拟器 还有不明白为何下面这两个数据对象为何要设置为 readonly ? @property (nonatomic, strong, readonly) NSMutableArray *downloadArrayWarpper; @property (nonatomic, strong, readonly) NSMutableArray *completeArrayWarpper;
推荐时使用 kvo 进行监听, 那怎么同时拿到几个任务的速度总和? 这里就得使用定时器, 然后定时去获取了吧
我在模拟器上测试 Demo 时,遇到程序产生异常的情况,这个异常在 [AFNetworking](https://github.com/AFNetworking/AFNetworking)的`Issue`中可以找到[记录](https://github.com/AFNetworking/AFNetworking/issues/3681)。 我的测试步骤如下(非必现,如果你在测试过程中遇到同样的问题,请在下面评论): - 在列表中点击一个未下载的内容启动下载。 - 使应用进入后台(模拟器 Shift+Command+H)。 - 停止在模拟器上运行应用。 - 在 Xcode 上重新 Run 应用。 - 点击示例中的“音乐列表”、“已下载列表”或“下载设置” 但我在真机上测试 Demo 时,并未遇到该问题,如果你在真机上遇到这个问题,请在下方评论留言告知。 另外,我还发现一个真机与模拟器上后台下载的差别: 真机:iPhone SE、iOS 9.3.3 Xcode:Xcode 8.3.2,模拟器版本为iPhone 7...