如何防止iOS自动删除用于离线播放保存的HLS内容?

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

重要

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

我正在开发一款使用HLS播放DRM音频内容的应用程序,并希望支持流媒体和下载,以便用户可以保存所需文件以进行离线播放。但是,如果下载的文件在未经用户许可的情况下被删除,那么用户体验会受到影响。请注意保留HTML标签。
所以我的问题是:我如何防止系统删除已下载的文件?即使文档明确指出不要这样做,我能否只是移动它们?是否有其他方法可以下载这些文件?在iOS 11中有一个新类AVAssetDownloadStorageManager,它支持将存储管理策略设置为默认或重要...系统会不会保证不会自动删除“重要”的下载媒体,而至少要先征得用户的同意?罗杰·潘托斯(Roger Pantos)在WWDC 2017上的HTTP Live Streaming进展中说,系统可能会删除资产以腾出空间进行软件更新,并询问用户,但该声明并不意味着资产不会因其他原因被自动删除。

你解决过这个问题吗? - byaruhaf
1个回答

2

我们已经将下载的资源从提供的位置移动到FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)几年了,到目前为止还没有出现任何问题。

我不确定这是否是一个好的做法,很可能不是。

更新:我们从头开始重写了下载模块,并决定尝试使用系统来处理资源。在内部QA测试后,我们发现该系统甚至可以在未通知用户的情况下删除已下载的内容。 最终,我们被迫再次开始将下载的内容移动到应用程序文档文件夹中。


嗨,我不确定将下载的内容移动到另一个文件夹是否合适。根据https://developer.apple.com/documentation/avfoundation/avassetdownloaddelegate/1845200-urlsession“下载的资源必须保留在系统提供的URL上。相反,您应该保存对此URL的持久引用以供将来使用。” - Hsiao-Ting
@Hsiao-Ting,是的,我们意识到了这个问题。但是iOS非常贪婪,往往会在没有用户交互的情况下删除已下载的资源。现在从用户的角度来看:你下载电影以便稍后观看,但当你到达没有网络连接的飞机上时,电影不在那里。有些东西告诉我,用户会责怪我们的应用而不是系统。 - ManWithBear

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接