【问题标题】:How can I prevent iOS from auto-deleting HLS content saved for offline playback?如何防止 iOS 自动删除为离线播放而保存的 HLS 内容?
【发布时间】:2018-04-03 22:35:46
【问题描述】:

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

重要

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

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

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

【问题讨论】:

  • 你找到解决方案了吗?

标签: ios http-live-streaming avassetdownloadtask avassetdownloadstoragemanager


【解决方案1】:

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

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

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

【讨论】:

  • 嗨,我不确定将下载的内容移动到另一个文件夹是否正常。根据developer.apple.com/documentation/avfoundation/…“下载的资产必须保留在系统提供的 URL。相反,您应该保存对该 URL 的持久引用以供将来使用”
  • @Hsiao-Ting 是的,我们知道这一点。但是 iOS 超级贪心,并且倾向于在没有用户交互的情况下删除下载的资产。现在从用户的角度来看:您下载电影以供稍后观看,但是当您到达没有互联网连接的飞机时,电影不存在。告诉我用户会责怪我们的应用程序而不是系统
猜你喜欢
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
  • 2018-03-06
  • 2019-02-06
  • 1970-01-01
相关资源
最近更新 更多