1

首先,我使用的是 iOS 13.6.1

我正在下载 HLS 视频以供以后离线播放。在前台时,一切都按预期工作,所有逻辑都在做它应该做的事情,似乎没有任何问题。
但是当应用程序进入后台时,我停止获取 AVAggregateAssetDownloadTask 的更新(我的意思是,我没有看到在 Xcode 控制台中打印的委托回调中的日志)。

我遵循了文档

  • NSURLSessionConfiguration sessionSendsLaunchEvents 设置为 true
  • AppDelegate 实现了 handleEventsForBackgroundURLSession
  • Session 委托实现 URLSessionDidFinishEventsForBackgroundURLSession

另外,我为获取启用了后台模式。

疯狂的是,如果我连接仪器网络监视器,我会得到所有的更新。而且我看到下载在后台继续进行。即使没有上述文档中提到的更改,我仍然看到下载在监视器打开的情况下继续在后台进行。
但似乎网络监视器以某种方式使应用程序保持活力,因为如果我不打开它,那么我将获得零更新。

需要明确的是,我什至没有考虑在后台开始或完成下载,以及唤醒应用程序或其他任何事情。我只想开始下载,转到后台并让下载继续下载内容并通知我(AFAIK 是在单独的过程中完成的,我可以从网络监视器确认它是)。

一个例子:

  • 打开应用程序
  • 开始下载
  • 去后台
  • 没有显示更新
  • 打开仪器网络监视器并连接到设备中运行的应用程序
  • 突然开始获取更新

我的想法不多了。除了框架中的错误之外,没有任何意义。
无论看起来多么简单,任何想法都将不胜感激。
提前致谢!

PS:当进入设置>存储时,我有时会看到文件大小在后台增加,这意味着即使我没有看到来自委托回调的更新,下载仍在继续。在某些时候,我看到文件大小在后台一段时间内没有变化,但这可能是无关紧要的事情(我希望如此)。

4

0 回答 0