在应用程序包中包含数千个音频文件的邮政编码

时间:2012-03-31 18:25:56

标签: ios filesystems zip bundle

我正在开发用于学习外语的应用程序,我需要在我的应用程序中发送80000个小音频文件。

为了减小我的应用程序的大小,我决定只在捆绑包中,在zip存档上发送它们中的一部分,然后将其解压缩到文档目录。然后,当iPhone进入Wi-Fi网络时,我会一点一点地下载所有其他网络。

但问题是Apple说,我们不允许在文档目录中存储大文件。标记要备份的文件仅在5.0.1以后才起作用

所以我看到了两种方式:

  1. 发送所有文件而不压缩它们并将它们存储在应用程序包中 - 但这太大了。
  2. 发送一个zip文件,将其取消存档到缓存目录,然后检查它们是否(未被系统删除),并下载一个(如果已删除)。
  3. 我应该选择什么,或者还有其他办法让我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

压缩音频文件不是一个好方法。我确信节省的空间不起任何作用。

最佳解决方案是使用AAC编码的audiofiles。 选择64-128 kbps之间的合适质量。可能是单声道。

iPhone及更高版本的iPhone为此编解码器提供硬件支持。

答案 1 :(得分:1)

如果你只是将它们解压缩到文档目录,那么在应用程序包中压缩文件没有多大意义。当应用程序包从应用程序商店发送到iOS设备时,无论如何它们都会被压缩(.ipa文件),因此解压缩到文档会使您的应用程序实际占用用户设备上的更多空间(一次在应用程序包中,一次进入文件目录)。

自动化方式: 如果要在不使用太多文档空间的情况下下载它们,可以编写具有最大允许大小的预测性缓存。您可以跟踪上次访问每个文件的时间以及何时需要下载新文件,删除最早访问的文件,直到您有足够的空间。您的应用程序可以根据课程的进度预测接下来需要哪些文件,但即使他们访问不存在的文件,您也可以及时下载并将其添加到缓存中以供将来重复使用。

手动方式: 您可以提供一个用户界面,向用户显示不同课程使用的空间,并将其拆分为课程包。允许用户控制哪些包保持缓存并显示他们使用了多少空间。他们可以决定何时下载新课程,以及何时删除旧课程(如果他们想要节省空间)。如果用户想要将文件保存在本地,那么即使它使用了大量文档空间,也应该让它们使用。