4

HLS 离线播放是在 WWDC 2016 的这次会议上宣布的,在 iOS 10 中。但是在大约 21:20 标记时,演示者正在谈论如何不应该将下载的文件从AVAssetDownloadTask放置它们的位置移动,因为系统可能需要如果磁盘空间不足,请删除它们。文档中也提到了这种可能性:

重要的

如果可用磁盘空间极低,操作系统可能会自动删除下载的资产。在您向用户展示资产可用于播放之前,请验证该资产是否存在并且可以离线播放。

我正在构建一个应用程序来使用 HLS 播放 DRM 的音频内容,并且我希望同时支持流式传输和下载,以便用户可以保存他们想要的文件以供离线播放。但是,如果下载的文件在未经用户许可的情况下被删除,那将是一种糟糕的体验。

所以我的问题是:如何防止系统删除下载的文件?即使文档明确表示不要移动它们,我可以移动它们吗?有没有其他方法可以下载文件?iOS 11 中有一个新类AVAssetDownloadStorageManager,支持将存储管理策略设置为默认或重要...是否可以保证系统不会在不至少先询问用户的情况下删除“重要”下载的媒体?Roger Pantos在 WWDC 2017 的 HTTP 实时流媒体进展中表示,系统可能会在询问用户后删除资产以为软件更新腾出空间,但该声明并不意味着资产不会因为其他原因而自动删除。

4

1 回答 1

2

几年来,我们一直在将下载的资产从提供的位置转移到其他位置FileManager.default.urls(for: .documentDirectory, in: .userDomainMask),到目前为止还没有发现任何问题。

我不确定这是一种好的做法,而且很可能不是。

UPD。我们从头开始重写了我们的下载模块,并决定试一试系统来处理资产。经过内部 QA 测试,我们发现系统可以在不通知用户的情况下删除下载的内容。最后,我们被迫再次开始将下载的内容移动到应用文档文件夹。

于 2019-10-31T14:09:29.260 回答