Danie1s / Tiercel

简单易用、功能丰富的纯 Swift 下载框架
MIT License
2.67k stars 388 forks source link

开启任务,但没反应,没回调. #151

Closed zzzzzyijie closed 3 years ago

zzzzzyijie commented 3 years ago

我这边有一个情况:

传入url (url有效), 但没反应,也没有成功或失败的回调。

这是什么原因呢?

log如下:

**** TiercelLog **** identifier : xxxxx.xxxResources Message : [SessionManager] running, tasks.count: 19

zzzzzyijie commented 3 years ago

我这边有一个情况:

传入url (url有效), 但没反应,也没有成功或失败的回调。

这是什么原因呢?

log如下:

**** TiercelLog **** identifier : xxxxx.xxxResources Message : [SessionManager] running, tasks.count: 19

iOS 14.6 iPhone 8 Plus

zzzzzyijie commented 3 years ago

用的版本是 3.2.1 比较奇怪的是: 在我的设备是没问题(应该说大部分设备没问题) 有部分用户会有出现这个情况,是什么原因呢 ?

zzzzzyijie commented 3 years ago

我这边有一个情况:

传入url (url有效), 但没反应,也没有成功或失败的回调。

这是什么原因呢?

log如下:

**** TiercelLog **** identifier : xxxxx.xxxResources Message : [SessionManager] running, tasks.count: 19

我这边Log排查了一下; 这个url 的任务在缓存里有(fetchTask,但拿到的task状态为 willSuspend,所以没走下载逻辑;这是bug吗? ( 我认为这里的download() 逻辑上有一些status被default break,也没有回调,这是为什么呢 ? image

Danie1s commented 3 years ago

卸载 App,重试

zzzzzyijie commented 3 years ago

卸载 App,重试

卸载应该是可以的,但是在逻辑怎么处理避免呢? ( 而且让用户卸载来解决,不太好..)

zzzzzyijie commented 3 years ago

卸载 App,重试

我这边重现了一个测试了下: 确定是 didStart() 时 的 status = running download() 时 的 status = willSuspend

所以导致没有回调, 我这边的暂时处理是方案,如果拿到的task == . willSuspend, 先移除掉再去重新下载..

希望可以找出原因和优化~

Danie1s commented 3 years ago

iOS-原生级别后台下载详解

image

你出现这种情况是因为图片上的那个原因,估计是你断点调试时,又重新运行了项目

在用户真实的使用场景中,是不会发生这种情况的

zzzzzyijie commented 3 years ago

iOS-原生级别后台下载详解

image

你出现这种情况是因为图片上的那个原因,估计是你断点调试时,又重新运行了项目

在用户真实的使用场景中,是不会发生这种情况的

但确实是真实的用户反馈😂(当时解决方案是卸载重装就好了),我也找有出现情况的机子看过(也连他的手机调试过),确实会没有回调的情况;

我这边的逻辑: 一个单例,然后持有一个SessionManager,再在SessionManager里download 不同url操作;

好吧,这情况确实不好重现和解决(我这边是有好几个用户反馈这个问题)。

Danie1s commented 3 years ago

首先,你卸载 App,重新安装后,不做任何断点调试,正常的使用下,会出现这个问题吗?

其次,你能在demo上复现吗?

moo611 commented 1 year ago

确实是断点导致的