Upgrade Invite — это пользовательский процесс, демонстрирующий ключевые новые функции, включенные в текущее доступное крупное обновление ОС Android.
Цель этого процесса — убедить пользователей обновить свое устройство до последней версии ОС.
Как только обновление ОС устройства ожидает одобрения пользователя, пользователи получают push-уведомление с описанием новых функций и приглашением выполнить обновление.
Производители устройств могут включить функцию Upgrade Party для своих устройств на базе ОС Android, отправив форму «Запрос на активацию приглашения на обновление Android» .
Настройте приглашение на обновление
Вы можете настроить приглашение на обновление следующими способами:
- Удалите ненужные функции.
- Обновите язык в текстовых блоках.
- Измените анимацию, цвета и шрифты в соответствии с вашим брендом.
Чтобы настроить поток, ознакомьтесь с рекомендациями в Руководстве по стилю обновления приглашений и включите информацию о настройке в ответ формы.
Руководство по стилю приглашения обновления
Воспользуйтесь этим руководством по стилю, чтобы изменить внешний вид приглашения на обновление в соответствии с вашим брендом (экраны, цвета, шрифты). Мы настоятельно рекомендуем сохранить размеры и структуру, близкие к оригинальному дизайну.
Процесс приглашения на обновление включает в себя следующие три компонента:
- Вводный экран
- Функциональный экран
- Конечный экран
Анимация на каждом экране помогает объяснить каждую функцию.
Вводный экран
Вводный экран содержит короткую анимацию, которая приветствует пользователя и побуждает его начать процедуру, показанную на начальном экране.
Макет

Анимация устройства всегда состоит из:
- Белый фон и разноцветные фигуры
- Рамка устройства
- Содержимое пользовательского интерфейса
Стайлинг
Если вы решили адаптировать стиль Material You , вы можете использовать цвета и формы по умолчанию, показанные в примере.

Если вы используете собственный фирменный цвет, убедитесь, что он хорошо сочетается с фоном пользовательского интерфейса.
Движение
Вариант 1: С часами на главном экране
- На экране появляются цифры.
- Цифры смещаются к центру, уменьшаясь в размере. Появляется рамка мобильного телефона.
- Телефон уменьшается в размерах. Фигуры начинают появляться на экране.
- Анимация завершена. Фигуры продолжают плавно двигаться.
![]() | ![]() |
Вариант 2: отсутствие часов на главном экране
- На экране появляется мобильный телефон.
- Телефон движется к центру, увеличиваясь в размерах. Фигуры начинают проникать на экран.
- Телефон достигает максимального размера, а фигуры продолжают двигаться.
![]() | ![]() |
Функциональный экран
Каждый экран функций отображает функцию новой ОС.
Макет

Анимация устройства всегда состоит из:
- Красочный фон
- Рамка устройства
- Содержимое пользовательского интерфейса
Стайлинг
- Выберите цвет фона, который хорошо сочетается с содержимым пользовательского интерфейса и общим внешним видом.
- Внутри экранов установите легко читаемый размер шрифта. При необходимости увеличьте размер шрифта.
Движение
Запишите анимацию работы каждой функции, включая сенсорное взаимодействие. Экспортируйте записи в файлы Lottie .
Конечный экран
Завершающий экран завершает процесс. Он показывает пользователю, что он прошёл все экраны.
Макет

Анимация устройства всегда состоит из:
- Полукруг на фоне (плюс анимированные фигуры)
- Рамка устройства
- Содержимое пользовательского интерфейса
Стайлинг
- Выберите цвет фона, который хорошо сочетается с содержимым пользовательского интерфейса и общим внешним видом.
- Используйте форму полукруга.
Движение
Следуйте стандартному потоку анимации заставки:
- Мобильный телефон немного поднимается.
- На заднем плане появляется круг.
- Из-за мобильного телефона появляются какие-то фигуры.
- Фигуры вылетают из фона, как конфетти.
![]() | ![]() |
Протестируйте процесс приглашения на обновление
- На устройстве Android перейдите в: Настройки > Google > Отладка Upgrade Party .
- Подготовьте триггер для Upgrade Invite для соответствующей ОС устройства (в зависимости от текущей версии ОС и конкретного потока Upgrade Invite для тестирования). Либо:
- Нажмите «Записать поддельное обновление (текущая версия)» . (например, если вы используете ОС Android 13, это запустит тестовый поток Android 13)
- Нажмите «Записать отложенное обновление (текущая версия + 1)» . (например, если вы используете ОС Android 12, это запустит тестовый поток Android 13)
- Нажмите «Сообщить об обновлении ОС».
- Либо щелкните полученное уведомление, либо щелкните Открыть приглашение на обновление.
Параметры триггера для приглашения на обновление
Существует 3 различных способа запуска потока приглашений на обновление: 1. автоматический 2. широковещательный 3. запуск с помощью Play Services SDK
Автоматически — уведомление от Google (только для устройств с поддержкой gOTA)
Для OEM-устройств с поддержкой gOTA интеграция происходит автоматически, и шаги по интеграции с Upgrade Invite не требуются. При обнаружении ожидаемого крупного обновления ОС на устройство будет отправлено push-уведомление от сервисов Google Play, что приведет к запуску процесса Upgrade Invite.
Android Broadcast — уведомление от Google (рекомендуется)
Трансляция приложения — самый простой и рекомендуемый способ интеграции потока приглашений на обновление.
Приёмник широковещательной рассылки позволяет инициировать процесс приглашения на обновление из вашего приложения с помощью широковещательного сообщения. Трансляция отправляет на устройство push-уведомление от сервисов Google Play, что запускает процесс приглашения на обновление.
Предпосылки для вещания
Чтобы подготовить свое приложение, выполните действия, описанные в следующих разделах.
Убедитесь, что файлы конфигурации вашего приложения используют следующие значения:
- minSdkVersion 14 или выше
- compileSdkVersion 28 или выше
- A использует разрешение android.permission.RECOVERY
Отправить трансляцию
Ниже приведены инструкции для OEM-приложения (или кода) по отправке широковещательного сообщения Android для активации push-уведомления:
Отправить трансляцию с действием.
com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATEДобавьте пакет
com.google.android.gmsв трансляцию.com.google.android.gms
Дополнительные требования
Поток приглашения на обновление также позволяет пользователям выполнять обновление ОС непосредственно из потока.
Чтобы это работало, предоставьте пользовательское намерение, которое Google может вызвать из потока приглашений на обновление, которое инициирует загрузку обновления.
Пример использования трансляции
См. следующий пример трансляции приложения:
Context context = getApplicationContext();
Intent upgradeInviteIntent = new Intent()
.setAction( "com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE")
.setPackage("com.google.android.gms");
.putExtra("com.google.android.gms.growth.upgradeparty.upgradeinvite.EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER", 14);
context.sendBroadcast(updateIntent);
Значение ключа EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER — это целое число, указывающее ожидаемую версию ОС (в данном примере устанавливаемая версия Android — 14). Это значение используется для определения того, какой поток приглашения на обновление будет запущен.
Play Services SDK — только запуск потока
Сторонний SDK позволяет вам активировать поток приглашений на обновление из вашего приложения или ваших собственных OTA-уведомлений. Используйте сторонний API для активации потока приглашений на обновление. Этот метод менее рекомендуется.
Предпосылки
Чтобы подготовить свое приложение, выполните действия, описанные в следующих разделах.
Убедитесь, что файл сборки вашего приложения использует следующие значения:
- minSdkVersion 14 или выше
- compileSdkVersion 28 или выше
Настройте свое приложение
Чтобы настроить приложение:
1. Extract the library from the provided .zip file, and place it in your
Репозиторий. 2. Добавьте зависимости для Google Growth SDK в файл Gradle уровня приложения вашего модуля, обычно app/build.gradle :
dependencies {
implementation files('<PATH_TO_BINARY>/play-services-growth-16.1.0-eap04.aar')
}
Для обеспечения зависимостей клиента включите следующие библиотеки:
com.google.android.gms:play-services-base:18.0.1 com.google.android.gms:play-services-basement:18.0.0 com.google.android.gms:play-services-tasks:18.0.1
Инициализация API
Для инициализации клиента используйте класс UpgradeParty:
import com.google.android.gms.growth.UpgradeParty; UpgradeParty.getClient(activity);Параметром активности должен быть инициирующий объект Activity.
API-функции
Полученный UpgradePartyClient предоставляет следующую функциональность.
isEligibleForUpgradeInvite
import com.google.android.gms.growth.UpgradeInviteEligibilityParams;
Task<Boolean> isEligibleForUpgradeInvite(UpgradeInviteEligibilityParams params);
/** Contains parameters for the eligibility query. */
class UpgradeInviteEligibilityParams {
/** Integer indicating the pending OS version (in this example, the Android version to be installed is 14). This is used to determine which Upgrade Invite flow will be triggered. */
int pendingAndroidOsVersionNumber;
}
Возвращает задачу , которая асинхронно проверяет, имеет ли пользователь право на приглашение на обновление. Полученное логическое значение указывает, имеет ли пользователь право на обновление или нет.
invokeUpgradeInvite
Task<Void> invokeUpgradeInvite();
Вызывает действие Upgrade Invite. Результирующий объект _Task_ указывает, произошла ли ошибка при запуске действия.
Коды ошибок
Оба метода API могут завершиться ошибкой с исключением типа com.google.android.gms.common.api.ApiException . В таких случаях ожидается, что вызывающий объект повторит попытку позже. Ожидаемые распространённые коды состояния включают:
- INTERNAL_ERROR — для любой ошибки в потоке базовой логики
- TIMEOUT — если запрос не удалось обработать своевременно
- API_NOT_CONNECTED — когда API недоступен (то есть модуль UpgradeParty еще не готов)
- NETWORK_ERROR — запрос не может быть обработан из-за сетевых ошибок.
- DEVELOPER_ERROR — вызывающему пакету не разрешен доступ к API UpgradeParty.
Пример использования SDK
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.google.android.gms.growth.UpgradeParty;
import com.google.android.gms.growth.UpgradePartyClient;
public class SampleActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final UpgradePartyClient client = UpgradeParty.getClient(this);
// Hide the invocation button initially
View startUpgradeInviteButton = findViewById(R.id.__some_button__);
startUpgradeInviteButton.setVisibility(View.GONE);
// Register an onClick handler to invoke the Upgrade Party Activity
startUpgradeInviteButton
.setOnClickListener(
view -> {
client
.invokeUpgradeInvite()
.addOnCompleteListener(
task -> {
if (!task.isSuccessful()) {
// Do something with error, see task.getException()
}
});
});
}
// Check if eligible for an Upgrade Party
client
.isEligibleForUpgradeInvite()
.addOnCompleteListener(
task -> {
if (!task.isSuccessful()) {
// Do something with error, see task.getException()
} else {
// Show/Hide invocation button, based on the result
int visibility =
task.getResult() ? View.VISIBLE : View.GONE;
startUpgradeInviteButton.setVisibility(visibility);
}
});
}





