按需交付的UX最佳实践

作为按需模块运行良好的功能是安装时大多数用户不需要的功能。以下是适合按需模块的应用功能的一些示例

  • 在大多数用户只观看视频的应用中编辑和上传视频
  • 在大多数用户只浏览和关注他人食谱的应用中添加食谱
  • 大多数用户不会寻求帮助或不会在应用内寻求帮助时的帮助和支持功能
  • 用于不太常用的功能的大型库,例如提供详细的错误捕获和报告
  • 特定的支付或结账功能
  • 非常高分辨率的媒体体验或VR/AR功能

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

此页面描述了可帮助您执行以下操作的最佳实践

  • 确保您的用户了解并感觉可以控制相对较大的模块下载(不会立即加载),或模块安装错误。
  • 进一步优化模块交付体验,尤其是在您可以预测用户将需要特定模块的情况下。

阅读本指南后,请尝试Play Core API示例应用,查看这些最佳实践的实际应用。

随时告知用户

当功能不可立即使用时,您应该告知用户。如果用户决定从Google Play下载该功能,请显示下载进度。

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

  • 对于可以非常快速安装的较小模块(约10 MB或更小),请考虑使用指示器,例如微调器或简短的“正在下载内容”消息。
  • 对于可能需要几秒钟或更长时间才能下载和安装的较大模块,请考虑显示下载和安装进度条,例如图1所示。

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

优雅地处理安装延迟和失败

如果下载失败或进度比预期慢,则应清晰透明地向用户说明正在发生的情况以及他们可以做什么(如果有),如图2和图3所示。例如,如果您监控下载请求的状态,并且您的应用收到API_NOT_AVAILABLE错误,请通知用户他们的设备不支持按需下载。

图2. 让用户知道为什么目前无法安装功能

图3. 向用户解释为什么功能下载可能比预期时间长

在请求大型下载的权限之前展示价值

如果按需模块很大(> 150MB),Google Play要求用户先同意才能下载。

在请求模块之前,向用户解释模块的价值。帮助他们理解您为什么要向他们提出此请求,就像请求应用权限一样。与用户坦诚沟通会增加他们接受下载的可能性。

例如,假设您正在构建一个电子商务应用,其中一项功能允许用户使用增强现实 (AR) 将家具直接放置在其公寓中。您可以包含如下消息:“您想在客厅看到您的新沙发吗?立即安装增强现实查看器。”

在后台执行下载和安装

模块下载和安装应始终在后台进行。也就是说,当用户等待功能可用时,您应该允许他们继续使用应用的其他部分。并且,当功能可用时,您应该提供一个通知,允许用户自行选择切换到使用该功能。

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

图5. 模块安装完成后,不要突然改变用户的上下文,而是通知用户请求的功能已准备好。

当模块可以使用时,通知用户并让他们选择是否启动该功能。此模式为用户提供了对其体验的上下文和控制。

在某些情况下,您可以在模块准备好后立即启动它。但是,因为它可能会中断用户的体验,因此请仔细考虑此行为是否符合预期和合适。

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

所有功能模块的一个有用功能是能够单独卸载它们。如果不再使用功能模块,您可以通过请求 Google Play卸载该模块来减小用户设备上应用的大小。

例如,您的应用可能具有强大的入门流程,可能包含丰富的媒体。在用户完成入门流程后,或在他们成为活跃用户一段时间后,您可以使用 Play 功能交付 API 请求 Google Play 只卸载应用的该组件。

请记住,您还可以稍后卸载在初始应用安装时包含的模块。例如,在用户首次使用应用时,培训新用户如何使用应用的模块很有价值。但是,为了减小应用大小,您可以在他们完成培训后将其卸载。

高级技巧

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

但是,您可能希望在用户向您发出他们想要使用它的信号之前预测用户何时可能会使用某个功能。以允许您下载和创建烹饪食谱的应用为例,以下指南描述了如何通过预测用户需求来优化模块交付体验。

预测用户在本会话中对功能的需求。考虑一下,用户是否只有在想要创建和分享自己的食谱给社区时才需要创建食谱应用的账户。您可以将账户创建作为用户可能想要添加自己食谱的信号,并在用户点击“添加食谱”之前就开始下载功能模块。您可以将此方法应用于应用中的其他用户旅程,以使功能下载过程更加无缝。

预测用户在即将到来的会话中对功能的需求。如果您不需要您的应用立即下载并安装按需模块,您可以推迟安装,直到应用处于后台时,Google Play 将为您处理下载和安装。例如,假设您想为烹饪应用程序发布新的季节性食谱,这些食谱对于用户当前会话并不重要。您可以请求 Play 在应用程序处于后台时下载并安装这些食谱。这对于较大的功能(>10MB)尤其有用,这些功能不需要立即使用,但将来可能会用到。

预测用户在应用安装前的功能需求。您可能想要添加对条件交付的支持,以便根据用户国家/地区、设备硬件能力和 API 级别在安装时包含您的功能。例如,您可能希望在条件模块中包含使用猪肉的食谱,并在主要避免猪肉菜肴的地区从应用程序安装中省略该模块。