onDemandResources.*

类型
修订 版本 2024.3703
关键词 按需资源, onDemandResources
平台 tvOS, iOS
另请参阅 Apple TV 和 tvOS (指南)

概述

onDemandResources 插件为 Apple 的 按需资源 提供了一个接口,适用于 tvOS。

使用按需资源对于开发 tvOS 游戏和应用程序至关重要,因为应用程序包的 限制 为 200 MB。

本质上,按需按需资源允许您将应用程序分成多个部分,并在需要时下载特定的资源/资产。这种技术还可以用于最小化应用程序的初始下载大小并减少设备存储中的占用空间。

标签

使用按需按需资源时,您应该将应用程序的各个部分分成可下载的包,并使用**标签**引用它们。每个标签可以指向单个资源(文件)或一组资源(文件夹)。默认情况下,这些资源将从应用程序包中排除,并且仅在应用程序下载后才可用。

有关按需按需资源/标签的配置,请参阅下面的 说明

重要
  • 在尝试使用资源之前,必须确保资源可用。这可以通过 onDemandResources.request() 来完成,它可以检查资源的可用性**或**下载它们。如果所需的资源不可用,您应该请求下载它们,并在尝试使用它们之前等待成功的回调响应。

  • 成功请求并下载资源后,可以安全地访问它们,直到应用程序终止。

  • 即使您通常可以像使用应用程序包中的资源一样使用按需按需资源,但它们实际上并不在那里。使用 system.pathForFile() 获取实际路径,或者使用便捷函数 onDemandResources.path()。例如,当按需按需资源是文本文件(不是图像)并且需要使用 io.open() 打开文件并读取其内容时(指南),这可能是必要的。

陷阱

项目设置

要使用此插件,请在 `build.settings` 的 `plugins` 表中添加一个条目。添加后,构建服务器将在构建阶段集成该插件。

settings =
{
    plugins =
    {
        ["plugin.onDemandResources"] =
        {
            publisherId = "com.coronalabs"
        },
    },      
}

重要

要配置按需按需资源,请在 `build.settings` 的 `tvos` 和/或 `ios` 表中包含 `onDemandResources` 表。此表应包含一系列条目(),用于定义按需按需资源的包。这些表中的每个表都必须包含必需的 `tag` 键(字符串)和必需的 `resource` 键(字符串),它们可以引用特定文件或包含多个资源的文件夹。

此外,您可以包含一个可选的 `type` 键,其值可以是以下两者之一:

  • `"install"` — 当从 App Store 下载应用程序时,将立即下载这些资源。这对于应用程序首次启动时可能立即需要的资源非常有用。与简单地预先捆绑在您的项目文件夹中以实现持久可用性的资源相比,标记为 `"install"` 的按需按需资源在某个时候仍可能从本地存储中删除。

  • `"prefetch"` — 这些资源将在从 App Store 下载应用程序后立即开始在后台下载。

settings =
{
    tvos =
    {
        onDemandResources =
        {
            { tag="introMusic", resource="intro.mp4", type="prefetch" },
            { tag="imgTutorial", resource="img/tutorial", type="install" },
            { tag="imgL1", resource="img/level1" },
        },
    },
    iphone = 
    {
        onDemandResources =
        {
            { tag="introMusic", resource="intro.mp4", type="prefetch" },
            { tag="imgTutorial", resource="img/tutorial", type="install" },
            { tag="imgL1", resource="img/level1" },
        },
    },

}

函数

onDemandResources.request()

onDemandResources.release()

onDemandResources.progress()

onDemandResources.pause()

onDemandResources.resume()

onDemandResources.cancel()

onDemandResources.path()

onDemandResources.getDownloadPriority()

onDemandResources.setDownloadPriority()

onDemandResources.getPreservationPriority()

onDemandResources.setPreservationPriority()

onDemandResources.setEventListener()

事件

onDemandResourcesEvent