Sha*_*ali 12 storage caching mission-critical ios
我有一个应用程序,可以让你下载可以扩展你的应用程序使用的"模块".
当用户下载模块时,我从服务器获取ZIP文件并将其解压缩到他的Caches文件夹.(每个拉链的尺寸可以从60k到2MB).
不幸的是,有超过300个模块可用,并且许多用户将至少50-60 个模块下载到他们的设备中.
最近,我收到很多关于模块刚从用户设备上消失的抱怨,所以我做了一些调查,并在Apple的文档中遇到了以下措辞.
iOS将在必要时从Caches目录中删除您的文件,因此如果删除了数据文件,您的应用程序将需要正常降级.
以下文章进一步解释了这种情况:http: //iphoneincubator.com/blog/data-management/local-file-storage-in-ios-5
我的问题是,我没有实际降级优雅的方法,因为我无法自动让用户下载这么多模块.这可能需要数小时,具体取决于互联网连接和模块的大小.
所以我有几个问题:
这是Apple的一个非常令人沮丧的举动,我并没有真正看到出路.真的很想听听你的一些想法.
编辑:经过一些测试,这似乎工作正常,并没有被清除.
这还没有100%确认,但它在我们的基本测试中运行良好(我会发布更全面的结果).似乎将数据保存到应用程序的"应用程序支持"文件夹可以解决这些问题,因为此文件夹未被清除.
该文档的状态:
使用应用程序支持目录常量NSApplicationSupportDirectory,附加您
<bundle_ID>的:应用程序为用户创建和管理的资源和数据文件.您可以使用此目录存储应用程序状态信息,计算或下载的数据,甚至是您代表用户/自动保存文件管理的用户创建的数据.
您可以按如下方式访问该文件夹(请注意,根据官方Apple文档的请求附加捆绑包ID):
[[NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:[[NSBundle mainBundle] bundleIdentifier]]
Run Code Online (Sandbox Code Playgroud)
希望这有助于任何人,正如我所说,我会在周末发布更全面的测试结果.
编辑2: 添加此行以防止从应用程序支持同步临时内容非常重要.我在我的applicationDidFinishLaunching结束时使用它:
[[NSURL URLWithString:NSApplicationSupportDir] setResourceValue:@(YES) forKey:NSURLIsExcludedFromBackupKey error:nil];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6411 次 |
| 最近记录: |