In-App Update для Android: принудительное обновление

Ускоренное обновление Android-приложения с In-App Update API Принудительное обновление для Android — инструмент Google Play, позволяющий доставлять патчи без действий пользователя. Пользователи не обновляются сами. По данным Play Console, среднее время установки — около 3 недель. Критический фикс

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
In-App Update для Android: принудительное обновление
Средний
от 4 часов до 2 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Ускоренное обновление Android-приложения с In-App Update API

Принудительное обновление для Android — инструмент Google Play, позволяющий доставлять патчи без действий пользователя. Пользователи не обновляются сами. По данным Play Console, среднее время установки — около 3 недель. Критический фикс ждёт пользователя 21 день. Этот API решает проблему напрямую. Принудительное обновление через Immediate-режим снижает долю устаревших версий до 5% уже за 48 часов. Наша команда накопила 7+ лет опыта в интеграции Android-механизмов обновлений. Мы реализовали данный инструмент в 40+ проектах. Стоимость базовой интеграции — от 15 000 рублей. Полный цикл с тестированием и CI/CD — от 35 000 рублей. Свяжитесь с нами для аудита: сократим время доставки критических патчей до нескольких минут.

Какой режим In-App Update выбрать?

Google Play In-App Update API, доступный через com.google.android.play:app-update-ktx, предоставляет два сценария. Минимальный Android SDK — уровень 21. Библиотека весит около 150 КБ и работает на Android 5.0 и выше.

Flexible update — фоновая загрузка, пользователь продолжает работу. Идеально для фичевых релизов. После завершения загрузки показывается снекбар с кнопкой «Перезапустить». Если пользователь его закрыл — нужно отдельно отслеживать InstallStatus.DOWNLOADED и показывать повторный запрос.

Immediate update — полноэкранный блокирующий интерфейс от Google Play. Приложение недоступно до завершения обновления. Используем при критических патчах: смена схемы шифрования, обязательная миграция БД, прекращение поддержки старого API бэкенда. Immediate update быстрее обычного ожидания: установка занимает 2-5 минут, а не 3 недели. Экономия на поддержке устаревших версий достигает 70%. По данным Google I/O 2023, install rate в Immediate-сценарии выше на 60-80%.

Характеристика Flexible Immediate
Блокировка приложения Нет Да
Подходит для Фичевые релизы Критические патчи
Время до обновления 3-7 дней Мгновенно
Уровень риска Низкий Средний (возможен отказ)

Что вызывает проблемы в реализации?

Самая частая ошибка — инициализировать AppUpdateManager без проверки доступности обновления. Метод appUpdateManager.appUpdateInfo возвращает Task<AppUpdateInfo>, и его нужно ждать асинхронно. Попытки вызвать startUpdateFlowForResult без готового AppUpdateInfo дают IllegalStateException в рантайме.

Второй частый баг — пропуск состояния когда обновление недоступно. Это проявляется на сборках из Firebase App Distribution и при работе с FakeAppUpdateManager. В продакшене этот путь недостижим, но в CI падают тесты.

Третья проблема — версионирование. Сравнение идёт по versionCode, не по versionName. Если несколько флейворов делят один versionCode, обновление не предложится. Это правило действует даже когда бинарники разные.

Реализация In-App Update под ключ

Интеграция начинается с аудита текущей схемы версионирования — проверяем, что versionCode монотонно возрастает и нет коллизий между флейворами. Затем добавляем зависимость и пишем UpdateManager-класс в слое domain (чистая архитектура — UI не знает о Play Services напрямую).

val appUpdateManager = AppUpdateManagerFactory.create(context) val appUpdateInfoTask = appUpdateManager.appUpdateInfo appUpdateInfoTask.addOnSuccessListener { info -> if (info.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && info.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE) ) { appUpdateManager.startUpdateFlowForResult( info, AppUpdateType.FLEXIBLE, activity, REQUEST_CODE_UPDATE ) } } 

Для Immediate-сценария добавляем staleDays — принудительный апдейт включается только если обновление доступно более N дней. Рекомендуемый порог — от 3 до 7 дней для фичевых релизов. Это снижает раздражение пользователей при мелких патчах.

Обработка onResume критична. Если пользователь свернул приложение во время Flexible-загрузки и вернулся — проверяем installStatus и предлагаем рестарт. Без этого приложение работает на старом коде, хотя новый уже лежит на диске.

Обработка отмены принудительного обновления

Immediate update не означает, что пользователь точно обновится. Он может закрыть приложение — onActivityResult вернёт RESULT_CANCELED. Нужно корректно обрабатывать эту ветку: логировать событие и, возможно, показывать диалог с объяснением необходимости обновления. В некоторых случаях можно переключиться на Flexible update, если это допустимо. Получите консультацию по внедрению In-App Update, и мы предложим индивидуальное решение для вашего приложения.

Тестирование In-App Update с FakeAppUpdateManager

FakeAppUpdateManager из play-app-update позволяет эмулировать все состояния без публикации в Play Store. В Espresso-тестах можно прогнать полный цикл: доступность → начало загрузки → завершение → рестарт. Согласно Google Play In-App Update API documentation, без этого покрытия баги уходят в продакшен. Google Play показывает UI поверх приложения. Стандартные UI-тесты его не видят. Тестовый цикл в CI занимает 4-6 минут.

Этап Действие Ожидаемый результат
Mock-тест Установить updateAvailability=UPDATE_AVAILABLE Запускается flow обновления
Отказ Возвращаем RESULT_CANCELED Приложение работает, логируется отказ
Загрузка Эмулировать InstallStatus.DOWNLOADING Отображается прогресс
Завершение InstallStatus.DOWNLOADED Предложение перезапуска
Типичные ошибки при интеграции
  • Игнорирование асинхронности appUpdateInfo
  • Отсутствие обработки RESULT_CANCELED
  • Конфликт versionCode между флейворами

Процесс работы и сроки

  1. Аналитика — аудит версионирования, архитектуры и текущих зависимостей (1 день).
  2. Проектирование — выбор режимов, определение staleDays, написание интеграционных тестов (1-2 дня).
  3. Реализация — код UpdateManager, обработка onResume, логирование (1-2 дня).
  4. Тестирование — unit, integration, UI автоматизация (1 день).
  5. Деплой — публикация в Internal Testing, проверка на реальных устройствах (1 день).

Ориентировочный срок — от 2 до 5 рабочих дней в зависимости от сложности архитектуры.

Что входит в работу

  • Аудит текущей схемы версионирования
  • Реализация UpdateManager с обработкой всех состояний
  • Юнит-тесты и UI-тесты с FakeAppUpdateManager
  • Интеграция с CI/CD
  • Документация по эксплуатации
  • Поддержка в течение 2 недель после релиза

Свяжитесь с нами для точной оценки вашего проекта — мы предоставим детальный план и гарантируем результат.