Рекомендации по UX для доставки по запросу

В виде модулей, устанавливаемых по запросу, лучше всего реализовывать функции, которые не нужны большинству пользователей сразу после установки приложения. Ниже приведены примеры функций, которые можно реализовать в виде модулей, доставляемых по запросу.

  • Редактирование и загрузка видео в приложении, где большинство пользователей только смотрят видео
  • Добавление рецепта в приложении, где большинство пользователей только просматривают и используют чужие рецепты.
  • Функции справки и поддержки, если большинство пользователей не обращаются за помощью или не делают этого в приложении.
  • Большие библиотеки для редко используемых функций, например для подробной регистрации ошибок и создания отчетов.
  • Особые возможности оплаты или оформления покупки
  • Медиаконтент в очень высоком разрешении или функции виртуальной/дополненной реальности.

В типичном случае, когда эти модули относительно небольшие (менее 10 МБ) и нет сбоев сети или других проблем, пользователи могут быстро скачать и использовать модуль по запросу. То есть пользователь не заметит разницы по сравнению с тем, как если бы модуль был установлен вместе с приложением.

В этой статье приведены рекомендации, которые помогут вам:

  • Убедитесь, что пользователи понимают, что происходит, и могут контролировать скачивание относительно больших модулей, которые не загружаются мгновенно, или ошибки при установке модулей.
  • Оптимизируйте доставку модулей, особенно в ситуациях, когда вы можете предвидеть, что пользователю понадобится определенный модуль.

Прочитав это руководство, вы можете посмотреть, как работают описанные в нем рекомендации, в примере приложения с Play Core API.

Информируйте пользователя

Если функция недоступна сразу, сообщите об этом пользователю. Если пользователь решит скачать функцию из Google Play, покажите ход скачивания.

Вы можете отслеживать состояние запроса, чтобы показывать пользователю ход скачивания и установки. Однако тип интерфейса, который вы хотите отобразить, может зависеть от размера загрузки:

  • Для небольших модулей (около 10 МБ или меньше), которые устанавливаются очень быстро, можно использовать индикаторы загрузки или короткое сообщение "Скачивание контента".
  • Для более крупных модулей, скачивание и установка которых может занять несколько секунд или дольше, рекомендуется показывать индикатор выполнения скачивания и установки, как показано на рисунке 1.

Рисунок 1. Показ сообщения и индикатора выполнения при скачивании и установке функции по запросу

Сообщайте о задержках и сбоях при установке

Если скачивание не удалось или выполняется медленнее, чем ожидалось, четко и понятно сообщите пользователю, что происходит и что он может сделать (если это возможно), как показано на рисунках 2 и 3. Например, если вы отслеживаете состояние запроса на скачивание и ваше приложение получает ошибку API_NOT_AVAILABLE, сообщите пользователю, что его устройство не поддерживает скачивание по запросу.

Рисунок 2. Сообщите пользователю, почему функция не может быть установлена в данный момент.

Рисунок 3. Объясните пользователю, почему скачивание функции может занимать больше времени, чем ожидалось.

Показывать значение до запроса разрешения на скачивание больших файлов

Если размер модуля по запросу превышает 150 МБ, Google Play запрашивает согласие пользователя на скачивание.

Прежде чем запрашивать модуль, объясните пользователям, в чем его ценность. Объясните, почему вы запрашиваете эти данные, так же, как вы делаете это при запросе разрешений для приложения. Открытое общение с пользователями повышает вероятность того, что они согласятся на скачивание.

Например, вы создаете приложение для электронной торговли, и одна из его функций позволяет пользователям размещать мебель прямо в своей квартире с помощью дополненной реальности (AR). Например, вы можете добавить сообщение: "Хотите посмотреть, как новый диван будет выглядеть в вашей гостиной? Установите средство просмотра дополненной реальности сейчас".

Скачивание и установка в фоновом режиме

Скачивание и установка модулей всегда должны выполняться в фоновом режиме. Пока пользователь ждет, когда функция станет доступна, он должен иметь возможность продолжать использовать другие части вашего приложения. А когда функция станет доступна, вы должны предоставить уведомление, которое позволит пользователю переключиться на использование этой функции по своему усмотрению.

Как показано на рисунке 5, пользователь продолжает работать с приложением и получает уведомление, когда установка функции по запросу завершена.

Рисунок 5. Вместо того чтобы внезапно менять контекст пользователя после завершения установки модуля, сообщите ему, что запрошенная функция готова к использованию.

Когда модуль будет готов к использованию, сообщите об этом пользователю и предложите ему запустить функцию. Такой подход позволяет пользователю лучше понимать, что происходит, и контролировать процесс.

В некоторых случаях вы можете запустить функцию, как только она будет готова. Однако это может помешать пользователю, поэтому тщательно подумайте, ожидаемо ли такое поведение и уместно ли оно.

Освобождение места в хранилище устройства, когда модуль больше не нужен

Полезная особенность всех модулей функций – возможность удалять их по отдельности. Если модуль функции больше не используется, вы можете уменьшить размер приложения на устройстве пользователя, запросив у Google Play удаление этого модуля.

Например, в вашем приложении может быть подробный процесс регистрации, возможно, с мультимедийным контентом. Когда пользователь завершит процесс адаптации или будет активен в течение определенного времени, вы можете использовать Play Feature Delivery API, чтобы запросить у Google Play удаление только этого компонента приложения.

Дополнительные советы

Обычно вам нужно обрабатывать ситуации, когда пользователь явно выражает намерение использовать функциональность ваших модулей функций, загружаемых по запросу.

Однако иногда нужно предсказать, когда пользователь захочет воспользоваться функцией, до того, как он сообщит об этом. В качестве примера рассмотрим приложение, которое позволяет скачивать и создавать кулинарные рецепты. Ниже описано, как оптимизировать доставку модулей, предугадывая потребности пользователей.

  • Предугадывайте, какая функция может понадобиться пользователю в текущем сеансе. Подумайте, нужно ли пользователям создавать аккаунт для приложения с рецептами, только когда они хотят создавать и делиться своими рецептами с сообществом. Вы можете использовать создание аккаунта как сигнал того, что пользователь, скорее всего, захочет добавить свой рецепт, и начать скачивание модуля функции ещё до того, как пользователь нажмет "Добавить рецепт". Вы можете применить этот подход к другим путям пользователя в приложении, чтобы сделать процесс скачивания функций более удобным.

  • Предугадывайте, когда пользователю понадобится функция в следующем сеансе. Если вам не нужно, чтобы приложение сразу скачивало и устанавливало модуль по запросу, вы можете отложить установку до момента, когда приложение будет работать в фоновом режиме. Google Play скачает и установит модуль за вас. Например, вы хотите выпустить новые сезонные рецепты для кулинарного приложения, которые не являются приоритетными для текущего сеанса пользователя. Вы можете запросить у Google Play скачивание и установку этих рецептов, когда приложение работает в фоновом режиме. Это особенно полезно для крупных функций (более 10 МБ), которые не нужны сразу, но могут понадобиться в будущем.

  • Предугадывайте потребности пользователей до установки приложения. Вы можете добавить поддержку условной доставки, чтобы функция устанавливалась в зависимости от страны пользователя, аппаратных возможностей устройства и уровня API. Например, вы можете включить рецепты со свининой в условные модули и не устанавливать их в регионах, где свинину не едят.