【问题标题】:Store iOS app audio files app in xcassets or documents directory?将 iOS 应用程序音频文件应用程序存储在 xcassets 或文档目录中吗?
【发布时间】:2017-04-28 22:40:53
【问题描述】:

如果应用需要数百个音频文件(它们很小,5-25KB),将它们放在资产目录或文档目录中更好吗?我已经尝试了这两种方法,但它们似乎没有太大区别,无论哪种方式在项目导航器中管理数百个文件都很痛苦,而且两者的应用程序文件大小相同。

【问题讨论】:

  • 您是否希望将这些文件包含在您的应用中,以便在用户首次安装您的应用时就位?还是这些文件是您的应用在用户首次运行您的应用时下载的?
  • 您确定您的意思是文档目录吗?这是第一次启动应用程序时创建的空的读/写目录。资产目录是只读的,其内容存储在应用程序包中。如果这些声音文件随应用程序一起提供,那么您必须将它们从捆绑包中复制到文档目录中(如果您想保留它们)。
  • @rmaddy,这些文件包含在应用程序中。
  • @DuncanC,我不确定我是否理解,我可以在 iPhone 上播放目录中的音频文件,所以我假设应用程序中已经有文件的副本。如果将文件从捆绑包复制到文档目录,那不是重复吗?
  • 这就是我的观点。您无法发布内容已在文档目录中的应用程序。如果您希望将声音文件放在文档目录中,则必须下载它们或从捆绑包中的某个位置(资产目录或捆绑包中的文件夹)复制它们。这意味着声音文件将位于 2 个位置。因此,我认为说“我应该将我的声音文件存储在资产目录还是文档目录中”是没有意义的,因为它们是不等价的。

标签: ios audio avfoundation nsdocumentdirectory xcasset


【解决方案1】:

由于您希望将音频文件与您的应用程序捆绑在一起,因此您不能使用 Documents 文件夹。 Documents 文件夹的使用是一项运行时功能,只有在您的应用从 App Store 安装并由用户运行后才能使用。

要将文件包含在您的应用中以便它们立即存在,它们必须是您应用的资源包的一部分。是使用资产目录还是简单地将它们存储在捆绑包中取决于您,但由于在用户第一次运行应用程序之前没有 Documents 文件夹,因此无法将它们打包到 Documents 文件夹中。

【讨论】:

  • 我的错误,由于某种原因,我认为当我将音频文件复制到项目导航器时,会在文档目录中创建文件。它是捆绑包的一部分。那么捆绑包和目录中有区别吗?
【解决方案2】:

到目前为止,我发现了一件事会影响是“仅”将音频文件放入 app bundle 还是将其放入 app bundle 的资产目录部分。

当您将音频文件放入资产目录时,它可以作为数据使用,没有 URL。据我所知,如果你想要一个 URL,你必须提取数据并创建一个文件,这是双重工作。

当您“只是”将音频文件放入应用程序包时,如果您有一个自动可用的 URL,它会为您提供更多选择。就像将 AVQueuePlayer 与 AVPlayerItem 一起使用。 AVPlayerItem 只需要一个 URL,而不是数据。如果您想从资产目录中逐个播放音频文件,则工作量更大,您必须为 AVAudioPlayerDelegate 编写代码,而使用 AVQueuePlayer,您只需提供一个 AVPlayerItems 数组。

我怀疑有一个 URL 可以参考可能有更多的优势,但我还没有看到资产目录的优势,所以我的意见可能会发生变化。

【讨论】:

    猜你喜欢
    • 2023-02-13
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 2014-03-27
    • 2019-01-18
    • 1970-01-01
    相关资源
    最近更新 更多