Xamarin 中的 tvOS 资源和数据存储

本文介绍如何在 Xamarin.tvOS 应用中使用资源和持久数据存储

tvOS 资源限制

与 iOS 设备不同,新的 Apple TV 为 tvOS 应用或数据提供极其有限的持久本地存储。 对于非常小的项(如用户首选项),tvOS 应用仍有权访问 NSUserDefaults,但数据限制为 500 KB。 但是,如果 Xamarin.tvOS 应用需要保留大量信息,则必须从 iCloud 存储和检索数据。

此外,tvOS 将 Apple TV 应用的大小限制为 200MB。 如果你的应用所需的资源超出此大小,则需要使用按需资源进行打包和加载(最多额外增加 2GB)。 鉴于这些限制,请务必正确安排下载其他资源的时间,以便为应用的用户提供最佳体验。 有关详细信息,请参阅 Apple 的按需资源指南

非持久下载

每个 tvOS 应用都带有一个临时缓存目录,用于下载其附加资源和资产。 只要应用仍在运行,此目录就会保留。 但是,由于 Apple TV 需要释放空间以供其他应用或系统使用,因此可以删除此缓存。

这样一来,你的应用就不能依赖在下次启动时使用之前下载的内容。 Xamarin.tvOS 应用应始终检查是否存在所需的资源,并根据需要下载它们。

重要

虽然你能够根据需要下载其他资产和资源,但 Apple 会警告不要消耗应用缓存中的所有空间,因为这可能导致不可预知的结果。

管理资源

由于 tvOS 应用的信息只能使用有限且不持久的存储,因此需要仔细规划这些限制,才能为你的 Xamarin.tvOS 应用创建良好的用户体验。

iCloud 数据存储

由于 Apple TV 上的存储受到限制,因此不仅存在非常有限的持久本地存储,而且你的应用不能保证下次运行时,它以前下载的任何信息都将可用。

因此,Xamarin.tvOS 应用必须在 iCloud 数据存储中存储任何用户数据。 Apple 为 tvOS 应用提供了两个基于 iCloud 的数据存储选项:

  • iCloud 键值存储 (KVS) - 对于应用可能需要较少信息(小于 1MB)的情况(如用户首选项),可以使用 iCloud KVS 存储。 iCloud KVS 数据会自动同步到云以及运行同一应用的所有用户设备。 有关详细信息,请参阅 iCloud 简介文档的键值存储部分或 Apple 的 iCloud 中的键值数据设计文档。
  • CloudKit - 若要存储较多的信息(大于 1MB),请使用 Apple 的 CloudKit Framework。 与 iCloud KVS 存储不同,CloudKit 数据可在应用的所有用户之间共享(并且对单个用户而言是专用的)。 有关详细信息,请参阅我们的 CloudKit 简介文档或 Apple 的 CloudKit 快速入门

重要

Apple 提供工具,用于帮助开发人员正确处理欧盟一般数据保护条例 (GDPR)。

按需资源

按需资源提供应用内容和资产(独立于应用程序包),这些资源托管在 App Store 上,并根据应用的需要进行下载。 最多可以使用按需资源额外提供 2GB 数据。 它们可以减少初始应用下载量(tvOS 应用限制为最多 200MB),同时仍能根据需要提供丰富的资产。

当 tvOS 应用请求按需资源时,系统将自动管理此内容的下载和存储(在应用的缓存目录中进行下载和存储)。 你的应用必须等待此内容下载完毕并可用后才能继续。

在多次启动应用的过程中,这些资源可能会继续缓存在 Apple TV 上,从而加快启动周期。 但是,你的应用不能依赖在下次启动时使用之前下载的任何内容。 有关详细信息,请参阅上面的非持久下载部分。

可以使用 Xcode 创建与给定资源标记关联的相关内容(例如游戏级别 2 的所有资产)捆绑包。 稍后,应用将通过指定此资源标记来请求按需资源。 你的应用应向用户显示一个 UI,指出内容正在下载中。 有关详细信息,请参阅 Apple 的按需资源指南

重要

应注意在应用下载按需资源的次数和单个下载的大小之间取得适当的平衡。 如果游戏过程不断中断以下载新内容或者单次下载花费太多时间,用户可能会对应用感到沮丧。

总结

本文介绍了 tvOS 系统对 Xamarin.tvOS 应用设置的大小、资源和数据存储限制。 它提供了解决这些限制的选项,并为打造出色的用户体验提出了建议。