Как принудительно установить минимальную версию приложения с помощью Remote Config

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

С помощью Remote Config вы можете динамически управлять требованиями к версии приложения из облака. Задав параметры версии в Remote Config, вы можете предлагать или требовать от пользователей обновить приложение, не развертывая собственную серверную инфраструктуру и не выпуская экстренное обновление.

Выберите стратегию обновления

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

  • Принудительное (блокирующее) обновление. Если более ранняя версия приложения несовместима с вашим бэкендом или представляет угрозу безопасности, вы можете заблокировать доступ к приложению, пока пользователь не обновит его. Если установленная версия более ранняя, чем требуемая минимальная, вы можете настроить приложение так, чтобы оно показывало диалоговое окно, которое нельзя закрыть и которое направляет пользователя в магазин приложений платформы для установки последней версии.
  • Гибкое (необязательное) обновление. Если в новой версии появились новые функции, улучшена производительность или исправлены незначительные ошибки, вы можете настроить показ баннера или запроса, который можно закрыть. Это позволит пользователям обновить приложение, когда им будет удобно, и продолжить работу с ним.

Шаг 1. Настройте параметры в консоли Firebase

Чтобы управлять версиями приложений, задайте параметры в шаблоне Remote Config:

  1. В консоли Firebase перейдите на страницу DevOps & Engagement (DevOps и взаимодействие) > Remote Config (Удаленная конфигурация) > Parameters (Параметры).
  2. Нажмите Добавить параметр (или Создать конфигурацию, если это ваш первый параметр).
  3. Задайте следующие параметры:
    • minimum_version – строка, представляющая самую раннюю поддерживаемую версию приложения (например, "2.4.0"). Приложения более ранних версий будут заблокированы до обновления.
    • latest_version (необязательно) – строка, представляющая последнюю доступную версию приложения (например, "2.5.1"). В приложениях, версия которых находится между minimum_version и latest_version, может показываться необязательная рекомендация по обновлению.
    • update_url (необязательно) – URL магазина, где пользователи могут скачать обновление (например, страница приложения в Google Play или Apple App Store).
  4. При необходимости добавьте условия для определенных платформ:
    • Поскольку в приложениях для Android и Apple часто используются разные версии и URL магазинов, вы можете добавить условные значения для каждой платформы в один и тот же параметр.
    • Нажмите Добавить значение для условия > Создать условие. Укажите название условия (например, Android App или iOS App), выберите Приложение в качестве правила таргетинга и укажите свое приложение.
    • Задайте подходящую строку версии для каждого условия платформы и оставьте значение по умолчанию в качестве резервного.
  5. Нажмите Сохранить, а затем Опубликовать изменения, чтобы применить шаблон.

Шаг 2. Реализуйте проверку версии на стороне клиента

При запуске клиента проверьте версию установленного приложения по параметрам Remote Config:

  1. Задайте значения по умолчанию в приложении. Всегда указывайте безопасные значения по умолчанию в пакете приложения. Например, задайте для minimum_version значение, соответствующее первой версии приложения, например "1.0.0". Это позволит приложению работать в обычном режиме, если устройство не подключено к интернету или первый запрос на получение данных не выполнен. Инструкции для разных платформ приведены в статье Как скачать шаблоны по умолчанию для Remote Config.
  2. Получение и активация Remote Config. Получайте и активируйте последние значения шаблона при запуске приложения.
  3. Сравните версии. Получите активные строки minimum_version и latest_version и сравните их с версией установленного приложения.

  4. Выполните действия на основе сравнения версий:

    • Принудительное обновление. Если версия current_version выпущена раньше, чем minimum_version, показывать полноэкранное модальное оповещение, которое нельзя закрыть. Отключите навигацию по остальным разделам приложения и добавьте кнопку, которая открывает update_url в магазине приложений.
    • Предложить необязательное обновление. Если current_version меньше latest_version, показать диалоговое окно или уведомление, которое можно закрыть. В нем должно быть указано, что доступно обновление, и предложены варианты Обновить сейчас и Позже.
    • Разрешить доступ. В противном случае разрешить пользователю войти в приложение.

Рекомендации

  • Добавьте прослушиватель в реальном времени. Если обновление версии требуется из-за проблем с безопасностью или серьезного ухудшения UX, добавление прослушивателя Remote Config в реальном времени в приложение может помочь обеспечить немедленное вступление в силу изменений требований к версии на активных устройствах, не дожидаясь следующей загрузки по расписанию или перезапуска приложения.
  • Проведите тестирование с ограниченной группой пользователей. Прежде чем повышать minimum_version для всех пользователей рабочей версии, протестируйте условие с ограниченной группой пользователей или выберите внутренних тестировщиков, используя специальные свойства пользователей. Это позволит убедиться, что модальное окно блокировки и ссылки на магазины отображаются правильно.
  • Используйте API для обновления приложений. На устройствах Android можно интегрировать Google Play In-App Updates вместе с проверками Remote Config, чтобы пользователи могли скачивать и устанавливать обновления, не выходя из приложения.
  • Ознакомьтесь с контрольными списками для рабочей версии. Прочитайте контрольный список Firebase для запуска и контрольный список AI Logic для рабочей версии, чтобы узнать больше о подготовке приложения и ИИ-функций к запуску.