按需资源 - 强制清除/清除下载的资源包

时间:2018-01-03 02:11:04

标签: swift xcode swift3

我有一个swift4应用程序在下载时按需资源包挂起的某些问题。该问题似乎与testflight环境中使用的资源包的不同版本有关,而不是与prod相关。有些用户表示这些软件包没有下载,但是几天之后(大概是在操作系统清除了软件包之后),下载开始再次运行。

我的问题是,有没有办法强行清除下载的捆绑包,而不是等待操作系统自行删除它们。我知道它可以通过xcode完成(通过数据面板中的清除),但我需要一个应用程序本身的原生解决方案。 (使用NSBundleResourceRequest.endAccessingResources()函数只会停止使用的资源,但不会删除它们)

1 个答案:

答案 0 :(得分:2)

简而言之,无法以编程方式删除ODR。我在Apple Developer论坛上问了类似的question,并得到了答案:

目前尚无办法以编程方式清除ODR资源。这取决于操作系统。

当发起新的网络请求ODR内容时,系统将进行某种清单检查,检查当前内存中是否有内容以及是否有空间容纳新内存。此检查还考虑了其​​他几个指标,例如当前正在使用的资产,最近使用的资产,用于UI的资产等等。

完成此操作后,系统将确定要清除多少选定资产,以便有足够的空间容纳新内容。如果我没记错的话,操作系统将尝试删除整个资产包。这意味着,如果系统正在清除资产,则它将清除分组在一起的资源,例如级别1,级别2和级别3的所有资产,前提是用户处于级别4。因此,系统可能会清除实际需要的空间要大得多。

如果您想更改应用的ODR资产,则必须向应用提交更新。