2016年3月23日
Apple “按需资源”插件现已可用
Corona Labs 很高兴地宣布 按需资源 插件的可用性,目前该插件在 tvOS 上受支持。与 Android 扩展文件概念类似(但功能上完全不同),按需资源允许您指定应用程序的部分/资产,这些部分/资产可以在需要时下载。这对于 Apple TV 尤其重要,因为 Apple 将 tvOS 应用程序的最大大小限制为 200 兆字节,并且它们不提供用于数据的本地存储。相反,他们希望开发人员使用按需资源来管理哪些资产在应用程序的哪些点可用。
设置
像任何插件一样,首先将其包含在您的 build.settings
中
1 2 3 4 5 6 7 8 9 10 11 12 |
settings = { plugins = { ["plugin.onDemandResources"] = { publisherId = "com.coronalabs", supportedPlatforms = { tvos=true } }, }, } |
定义资源
要使按需资源工作,您必须在 build.settings
的 tvos
→ onDemandResources
表中通过“标签”指定各种文件或文件夹。每个条目本身都是一个包含两个必需的键值对的表:标签名称 (tag
) 和它引用的文件/文件夹 (resource
)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
settings = { tvos = { onDemandResources = { { tag="introMusic", resource="intro.mp4", type="prefetch" }, { tag="imgTutorial", resource="img/tutorial", type="install" }, { tag="imgL2", resource="img/level2" }, }, }, } |
此外,您可以为每个标签指定下载优先级。这通过 type
键完成,该键具有以下值之一
"install"
— 将此用于在应用首次启动时可能立即需要的关键文件。这些资源与应用下载本身并行下载,但是它们不会作为持久资源捆绑在应用包中。"prefetch"
— 这些资源将在应用程序完成下载后在后台开始下载。- 没有
type
— 这些是您在需要时获取的资源。
无论 type
值如何,您都需要在使用它之前显式请求标签。没有类型的标签会在应用程序流程中的逻辑点请求。
请求内容
要在需要时下载资源文件/文件夹,例如玩家完成第一关后的第二关的资产,只需调用 onDemandResources.request() 函数。这可以被认为是插件的“核心”功能,因为在您访问按需资源之前,它是必需的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
-- 引入插件 local odr = require( "plugin.onDemandResources" ) -- 按需资源监听器函数 local function odrListener( event ) if not ( event.isError ) then print( "标签 '" .. event.tag .. "' 的资源已下载" ) else print( "错误:errorCode = " .. tostring(event.errorCode) ) end end -- 请求第二关的图像资源 odr.request( "imgL2", true, odrListener ) |
onDemandResources.request() 最重要的方面之一是第二个参数:布尔值 true
或 false
。将此设置为 true
(或省略它,因为 true
是默认值)会告诉 Corona 立即开始下载资源。
相比之下,如果您将此参数设置为 false
,Corona 只会检查资源是否已下载
1 2 3 4 5 6 7 8 9 10 11 12 |
local odr = require( "plugin.onDemandResources" ) -- 按需资源监听器函数 local function odrListener( event ) if ( event.isError ) then -- 资源尚未下载。您需要请求它们。 end end -- 请求第二关的图像资源 odr.request( "imgL2", false, odrListener ) |
重要提示
- 如果操作系统需要空间,所有按需资源都可能会被操作系统逐出,因此即使是基于
install
和prefetch
的资源,您也应在使用它们之前检查其可用性。如果它们不存在,您将需要再次请求/下载它们。- 大型下载需要时间,因此您可以考虑使用更多标签,但整体下载大小更小。Apple 建议将标记资源保持在 64 兆字节以下。标签的最大大小为 512 兆字节。
- 您必须使用像 Apple 的 TestFlight 这样的服务来测试按需资源——您不能简单地将应用程序直接加载到您的测试设备上。这是 Apple 能够实际从他们的服务器交付各种资源的唯一方法。
结论
按需资源对于开发 tvOS 游戏和应用程序至关重要,而 Corona 的插件提供了与 Apple 服务器的必要接口。要了解更多信息,请参阅文档或在 Corona 论坛中进一步讨论。
Scott
发布于 11:13,3 月 23 日不支持 iOS?
Rob Miracle
发布于 15:14,3 月 23 日不支持 iOS。
Anders Hjarnaa
发布于 17:57,3 月 23 日这是个好消息,我真的很期待这个。何时可以用于 iOS,而不仅仅是 tvOS?
Ed Maurina
发布于 09:31,3 月 24 日太棒了。我对今年 Corona 的重要更新和新增功能感到非常满意。向整个团队致敬。