是否需要请求预取 iOS 点播资源标签?

问题描述 投票:0回答:2

根据 Apple 的 documentation 关于 Prefetched On-Demand 标签:

应用程序安装后开始下载资源。标签 将按照它们在列表中列出的顺序下载 预取标签顺序组。

使用预取标签指定的资源是否需要通过

beginAccessingResources
上的
NSBundleResourceRequest
显式请求(就像常规的 仅按需下载 标签一样),还是应该按照文档建议自动下载而不需要任何显式代码?

我已经用预取标签标记了多个资产,但我没有看到它们在调试版本中自动下载,但如果我明确请求它们,它们就会被下载。 (我还没有在 TestFlight 上测试过。)

ios foundation on-demand-resources
2个回答
0
投票

在开发过程中,您只能使用“仅按需下载”。您必须将应用程序部署到 App Store 或 TestFlight 才能使用其他标签类型。


0
投票

是的,仍然需要使用

beginAccessingResources
上的
NSBundleResourceRequest
来请求它们,就像常规的“仅按需下载”标签一样。

我已经使用

conditionallyBeginAccessingResourcesWithCompletionHandler
进行了测试,它总是返回 false。我只在 TestFlight 上测试过这个,但没有在 App Store 上测试过。

但是,我们仍然应该明确要求他们,原因有以下三个:

  1. 根据文档,如果用户下载应用程序和打开应用程序之间经过一段时间,预取的资源可能会被删除。
  2. 何时发生预取由系统决定;因此,无法保证用户首次打开应用程序时资源可用。
  3. 不同标签的API调用在文档中没有明确的区别。

因此,如果我们需要使用资源,我们应该始终调用 beginAccessingResources。如果您的应用程序肯定会在以后的每次启动中使用它们,您可以将它们缓存到缓存目录中。

© www.soinside.com 2019 - 2024. All rights reserved.