Google 致力于为黑人社区推动种族平等。查看具体举措

有关按需分发的用户体验最佳做法

大多数用户在安装时都用不到以按需模块方式提供的功能。以下几个示例说明了适合按需提供的模块的应用功能:

  • 在应用中编辑和上传视频(大多数用户只会观看视频)
  • 在应用中添加食谱(大多数用户只会浏览并学习其他人的食谱)
  • 帮助和支持功能(大多数用户不会寻求帮助或不会在应用中寻求帮助)
  • 提供不常用功能(例如提供详尽的错误捕捉和报告功能)的大型库
  • 特定的付款或结帐功能
  • 分辨率极高的媒体内容或 VR/AR 功能

通常情况下,这些模块相对较小(不到 10MB),在没有网络问题或其他故障的情况下,用户可以非常快速地下载和使用按需提供的模块。也就是说,用户体验通常与模块在应用安装时已存在的情况没有什么不同。

本页介绍了可帮助您实现以下目标的最佳做法:

  • 确保您的用户了解并觉得能够掌控(需要一定时间来加载的)大型模块下载或模块安装错误。
  • 进一步优化模块分发体验,尤其是在您可以预期用户需要特定模块的情况下。

阅读完本指南后,请尝试使用 Play Core API 示例应用,了解现行的这些最佳做法。

让用户了解相关信息

在系统无法立即提供某项功能时,您应该通知用户。如果用户决定从 Google Play 下载该功能,请显示下载进度。

您可以监控请求状态,以显示下载进度和安装状态。但是,要显示的界面类型可能取决于下载内容的大小:

  • 对于可以快速安装的较小模块(约 10 MB 或更小),不妨使用旋转图标或简明的“正在下载内容”消息等指示器。
  • 对于可能需要几秒钟或更长时间才能完成下载和安装的较大模块,不妨显示下载和安装进度条,如图 1 所示。

图 1. 下载和安装按需功能时显示消息和进度条

恰当地传达安装延迟和故障

如果下载失败或进度比预期慢,请向用户清晰明确地传达所发生的情况以及他们可以采取的措施,如图 2 和图 3 所示。例如,如果您监控下载请求的状态,并且您的应用收到了 API_NOT_AVAILABLE 错误,请通知用户他们的设备不支持按需下载。

图 2. 让用户知道此时无法安装某项功能的原因

图 3. 向用户说明为何下载某项功能所用的时间比预期要长

在征求下载大型模块的许可之前,先介绍一下模块的价值

如果按需提供的模块较大(大于 10MB),Google Play 会要求在下载该模块之前先征得用户同意,如图 4 所示。

在您请求下载该模块的之前,请向用户介绍该模块的价值。帮助他们了解您提出此请求的原因,就像提出应用权限请求时一样。开诚布公地与用户交流可提高他们接受下载的可能性。

例如,假设您要构建一个电子商务应用,其中一项功能允许用户使用增强现实 (AR) 技术将家具直接放置在他们的公寓内。您可以添加一条消息,例如“您想查看新沙发放在客厅的效果吗?请立即安装增强现实查看器。”

图 4. 对于较大的按需下载,Google Play 会请求用户确认

在后台执行下载和安装

模块下载和安装应始终在后台进行。也就是说,当用户等待某项功能变为可用时,您应该允许他们继续使用应用的其他部分。当该功能可用时,您应提供一则通知来允许用户自行决定是否改用该功能。

如图 5 所示,用户会继续使用该应用,并在按需功能安装完毕时收到通知。

图 5. 当模块安装完毕时,不要突然改变用户所处的环境,而是通知用户所请求的功能已可供使用。

当模块可供使用时,通知用户并让他们选择是否启动该功能。此模式可让用户了解具体环境并控制他们的体验。

在某些情况下,您可以在相关功能可供使用后立即启动该功能。但是,由于这样可能会中断用户的体验,因此请仔细考虑此行为是否符合预期且适当。

不再需要模块时释放设备存储空间

所有动态功能模块都可以单独卸载,这项功能非常有用。如果不再使用某个功能模块,您可以通过请求 Google Play 卸载该模块来减小应用在用户设备上的大小。

例如,您的应用可能具有功能强大的新手入门流程,其中可能包含富媒体。当用户完成新手入门流程或已经活跃了一段时间后,您可以使用 Play Core library API 请求 Google Play 仅卸载应用中的该组件。

请注意,您也可以之后卸载首次安装应用时添加的模块。例如,当用户首次使用您的应用时,指导新用户如何使用该应用的模块非常有用。但是,要减小应用大小,您可以在完成培训后将其卸载。

高级提示

通常,您需要处理用户明确表示有意使用按需功能模块的情况。

但是,您可能希望在用户发出希望使用某项功能的信号之前预测用户何时可能会与该功能进行互动。以可让您下载和制作烹饪食谱的应用为例,以下指南介绍了如何通过预测用户需求来优化模块分发体验。

预测用户在当前会话中对某项功能的需求。考虑一下,用户是否仅在想制作自己的食谱并与社区分享时才需要在食谱应用中创建帐号。您可以根据创建帐号这一操作判断用户是否可能想添加自己的食谱,并在用户点按“添加食谱”之前开始下载相应功能模块。您可以在应用的其他使用过程中应用此方法,以使功能下载流程更加顺畅。

预测用户在将来的会话中对该功能的需求。如果您不希望应用立即下载并安装某个按需提供的模块,可以延迟到应用在后台运行时再安装该模块,并且 Google Play 会为您处理下载和安装操作。例如,假设您要在烹饪应用中推出新的季节性食谱,这些食谱在用户的当前会话中优先级并不高。您可以请求 Play 在该应用于后台运行时下载并安装这些食谱。这对于并非需要立即使用但将来可能需要使用的较大功能(大于 10MB)尤其有用。

在安装应用之前预测用户对某项功能的需求。您可能希望添加对按条件分发的支持,以便在安装时根据用户所在国家/地区、设备硬件功能和 API 级别包含您的功能。例如,您可能希望添加这样的食谱:在条件模块中使用猪肉,并在大多数人忌吃猪肉的地区从应用安装中省略该模块。

减少要求用户确认的不必要请求。可能存在这样一种情况:某个特定功能模块大于 10MB,并且您预测某指定用户可能会与该功能进行互动,但他们不需要立即使用该功能。在此类情况下,您可以使用延迟安装。与您使用 SplitInstallManager.startInstall() 自行直接安装较大模块的情况不同,系统不会向用户显示安装警告和确认消息(图 3)- Play 会遵循用户的标准安装偏好设置。延迟安装由 Play 在后台进行管理。如果相应模块未安装而用户需要它,您也可以改为按需加载该模块。

其他资源

要详细了解 Android App Bundle,请参阅以下资源。

示例

Codelab

  • 您的首个 Android App Bundle:一个探索 Android App Bundle 基本原理的 codelab,向您展示了如何使用 Android Studio 快速开始编译您自己的 App Bundle。此 codelab 还探讨了如何使用 bundletool 测试 App Bundle。
  • 按需提供的模块:可帮助您创建按需下载和安装动态功能的应用。

博文

视频