适合作为按需模块的功能是那些在安装时大多数用户不需要的功能。以下是一些适合作为按需模块的应用功能示例:
- 在一个大多数用户只观看视频的应用中编辑和上传视频
- 在一个大多数用户只浏览和关注他人食谱的应用中添加食谱
- 帮助和支持功能,当大多数用户不寻求帮助,或不在应用内寻求帮助时
- 用于不太常用功能的大型库,例如提供详细的错误捕获和报告
- 特定的付款或结账功能
- 非常高分辨率的媒体体验或 VR/AR 功能
在这些模块相对较小(小于 10 MB)且没有网络或其他故障的典型情况下,用户可以非常快地下载并使用按需模块。也就是说,体验通常与模块在应用安装时就存在的情况没有什么不同。
本页面介绍了一些最佳实践,可以帮助您完成以下操作:
- 确保您的用户了解并能控制那些不会立即加载或安装出现错误的相对较大的模块下载。
- 进一步优化模块交付体验,尤其是在您能够预测用户需要某个特定模块的情况下。
在阅读完本指南后,请尝试使用 Play Core API 示例应用,以了解这些最佳实践的实际应用。
让用户了解情况
当功能不可用时,您应该通知用户。如果用户决定从 Google Play 下载功能,请显示下载进度。
您可以 监控请求状态 以显示下载进度和安装状态。但是,您想要显示的 UI 类型可能取决于下载的大小。
- 对于可以非常快地安装的较小模块(约 10 MB 或更小),请考虑使用指示器,例如微调器或简短的“正在下载内容”消息。
- 对于下载和安装可能需要几秒钟或更长时间的大型模块,请考虑显示一个下载和安装进度条,例如图 1 中所示。
优雅地处理安装延迟和失败
如果下载失败或进度比预期慢,请清楚且透明地向用户传达发生了什么以及他们可以做什么(如果有),如图 2 和图 3 所示。例如,如果您监控下载请求的状态,并且您的应用收到API_NOT_AVAILABLE
错误,请通知用户他们的设备不支持按需下载。
在请求大型下载权限之前展示价值
如果按需模块很大(> 150MB),Google Play 要求用户先同意才能下载。
在您请求模块之前,向用户解释模块的价值。帮助他们理解您为什么要提出此请求,就像您请求应用权限时一样。与用户公开沟通会增加他们接受下载的可能性。
例如,假设您正在构建一个电子商务应用程序,其中一项功能允许用户使用增强现实 (AR) 将家具直接放置在他们的公寓中。您可以包含一条消息,例如“您想在客厅里看到您的新沙发吗?立即安装增强现实查看器。”
在后台执行下载和安装
模块下载和安装应始终在后台进行。也就是说,当用户等待功能可用时,您应该允许他们继续使用应用程序的其他部分。当功能可用时,您应该提供一个通知,允许用户自行选择切换到使用该功能。
如图 5 所示,用户继续使用应用程序,并在按需功能安装完成后收到通知。
当模块准备使用时,通知用户并让他们选择是否启动该功能。这种模式为用户提供了上下文和对其体验的控制。
在某些情况下,您可以在功能准备就绪后立即启动它。但是,因为它可能会中断用户的体验,请仔细考虑这种行为是否符合预期且合适。
当模块不再需要时释放设备存储空间
所有功能模块的一个有用功能是能够单独卸载它们。如果功能模块不再使用,您可以通过请求 Google Play卸载该模块来减小用户设备上应用程序的大小。
例如,您的应用程序可能有一个强大的入门流程,可能包含丰富的媒体。在用户完成入门流程后,或者在他们成为活跃用户一段时间后,您可以使用 Play 功能交付 API 请求 Google Play 只卸载应用程序的该部分。
请记住,您也可以随后卸载在初始应用程序安装时包含的模块。例如,一个模块在用户首次使用应用程序时很有价值,该模块可以训练新用户如何使用您的应用程序。但是,为了减小应用程序的大小,您可以在他们完成培训后将其卸载。
高级技巧
通常,您需要处理用户明确表示要使用按需功能模块的功能的情况。
但是,您可能希望在用户向您表示他们想要使用功能之前预测他们何时可能使用该功能。以一个允许您下载和创建烹饪食谱的应用程序为例,以下指南描述了如何通过预测用户需求来优化模块交付体验。
预测用户在本会话中对功能的需求。考虑用户是否只需要在想要创建和与社区分享自己的食谱时才为食谱应用程序创建一个帐户。您可以将帐户创建用作用户可能想要添加自己的食谱的信号,并在用户甚至点击“添加食谱”之前开始下载功能模块。您可以将此方法应用于应用程序中的其他用户旅程,以使功能下载过程更加无缝。
预测用户在即将到来的会话中对功能的需求。如果您不需要您的应用程序立即下载和安装按需模块,您可以将其安装推迟到应用程序处于后台时,Google Play 将为您处理下载和安装。例如,假设您想要为烹饪应用程序发布新的季节性食谱,这对用户当前的会话来说并不重要。您可以在应用程序处于后台时请求 Play 下载和安装这些食谱。这对于不需要立即使用但将来可能需要使用的较大功能(>10MB)特别有用。
预测用户在应用程序安装之前的功能需求。您可能想要添加对条件交付的支持,以根据用户国家/地区、设备硬件功能和 API 级别在安装时包含您的功能。例如,您可能希望在条件模块中包含使用猪肉的食谱,并将该模块从应用程序安装中省略在主要避免猪肉菜肴的地区。