根据 Apple 的 documentation 关于 Prefetched On-Demand 标签:
应用程序安装后开始下载资源。标签 将按照它们在列表中列出的顺序下载 预取标签顺序组。
使用预取标签指定的资源是否需要通过
beginAccessingResources
上的 NSBundleResourceRequest
显式请求(就像常规的 仅按需下载 标签一样),还是应该按照文档建议自动下载而不需要任何显式代码?
我已经用预取标签标记了多个资产,但我没有看到它们在调试版本中自动下载,但如果我明确请求它们,它们就会被下载。 (我还没有在 TestFlight 上测试过。)
在开发过程中,您只能使用“仅按需下载”。您必须将应用程序部署到 App Store 或 TestFlight 才能使用其他标签类型。
是的,仍然需要使用
beginAccessingResources
上的 NSBundleResourceRequest
来请求它们,就像常规的“仅按需下载”标签一样。
我已经使用
conditionallyBeginAccessingResourcesWithCompletionHandler
进行了测试,它总是返回 false。我只在 TestFlight 上测试过这个,但没有在 App Store 上测试过。
但是,我们仍然应该明确要求他们,原因有以下三个:
因此,如果我们需要使用资源,我们应该始终调用 beginAccessingResources。如果您的应用程序肯定会在以后的每次启动中使用它们,您可以将它们缓存到缓存目录中。