升级邀请是一个用户流程,展示了当前可用 Android 主要操作系统升级中包含的主要新功能。
该流程旨在帮助说服用户将其设备升级到最新的操作系统版本。
一旦设备有待用户批准的操作系统升级,用户将收到推送通知,显示新功能并邀请他们执行升级。
设备制造商可以通过提交激活 Android 升级邀请表单的请求,为其 Android 操作系统设备启用升级派对。
自定义升级邀请体验
您可以通过以下方式自定义升级邀请体验
- 移除不相关的功能。
- 更新文本块中的语言。
- 修改动画、颜色和字体以匹配您的品牌。
要自定义流程,请查看升级邀请样式指南中的指南,并将您的自定义信息包含在表单回复中。
升级邀请样式指南
使用此样式指南修改升级邀请的外观以适合您自己的品牌(屏幕、颜色、字体)。我们强烈建议保持尺寸和结构与原始设计接近。
升级邀请流程包含以下三个组件
- 介绍屏幕
- 功能屏幕
- 结尾屏幕
每个屏幕上的动画都有助于解释每个功能。
介绍屏幕
介绍屏幕包含一个简短的动画,欢迎用户并鼓励他们开始介绍屏幕上显示的流程。
布局

设备动画始终包含
- 白色背景和彩色形状
- 设备框架
- UI 内容
样式
如果您选择采用 Material You 样式,则可以使用示例中显示的默认颜色和形状。

如果您使用自己的品牌颜色,请确保它与 UI 背景良好配合。
动画
选项 1: 主屏幕上带有时钟
- 数字进入屏幕。
- 数字移动到中心,同时尺寸减小。手机框架出现。
- 手机尺寸减小。形状开始进入屏幕。
- 动画完成。形状保持轻微移动。
![]() |
![]() |
选项 2: 主屏幕上没有时钟
- 手机进入屏幕。
- 手机移动到中心,同时尺寸增大。形状开始进入屏幕。
- 手机达到最大尺寸,形状保持移动。
![]() |
![]() |
功能屏幕
每个功能屏幕突出显示新操作系统中的一项功能。
布局

设备动画始终包含
- 彩色背景
- 设备框架
- UI 内容
样式
- 选择与 UI 内容和整体外观良好配合的背景颜色。
- 在屏幕内部,设置易于辨认的字体大小。如果需要,设置更大的字体大小。
动画
记录每个功能流程的动画,包括触摸交互。将录制导出为 Lottie 文件。
结尾屏幕
结尾屏幕完成流程。它向用户指示他们已浏览完所有屏幕。
布局

设备动画始终包含
- 背景上的半圆(加上动画形状)
- 设备框架
- UI 内容
样式
- 选择与 UI 内容和整体外观良好配合的背景颜色。
- 使用半圆形形状。
动画
遵循标准的结尾屏幕动画流程
- 手机稍微向上移动。
- 背景中出现一个圆圈。
- 形状从手机后方出现。
- 这些形状像五彩纸屑一样从背景中飞出。
![]() |
![]() |
测试升级邀请流程
- 在 Android 设备上,转到:设置 > Google > Upgrade Party 调试。
- 为相关设备操作系统准备升级邀请的触发器(取决于您当前的操作系统版本以及要测试的特定升级邀请流程)。可以是
- 点击写入伪造升级(当前版本)。(例如,如果您运行 Android 13 操作系统,这将触发 Android 13 测试流程)
- 点击写入待处理升级(当前版本 + 1)。(例如,如果您运行 Android 12 操作系统,这将触发 Android 13 测试流程)
- 点击报告操作系统升级
- 点击收到的通知,或点击打开升级邀请。
升级邀请的触发选项
有 3 种不同的方式来触发升级邀请流程:1. 自动 2. 广播 3. Play Services SDK 触发
自动 - Google 触发的通知(仅适用于运行 gOTA 的设备)
对于运行 gOTA 的 OEM 设备,集成是自动的,无需升级邀请集成步骤。一旦检测到待处理的主要操作系统升级,这将从 Google Play 服务向设备发送推送通知,从而引导至升级邀请流程。
Android 广播 - Google 触发的通知(推荐)
应用广播是集成升级邀请流程的最简单和推荐方式。
广播接收器使您能够使用广播消息从您的应用触发升级邀请流程。广播从 Google Play 服务向设备发送推送通知,从而引导至升级邀请流程。
广播先决条件
要准备您的应用,请完成以下部分中的步骤。
确保您的应用的配置文件使用以下值
- minSdkVersion 为 14 或更高
- compileSdkVersion 为 28 或更高
- usesPermission 为 android.permission.RECOVERY
发送广播
请参阅以下 OEM 应用(或代码)的说明,以发送 Android 广播来触发推送通知
使用操作发送广播。
com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
将
com.google.android.gms
包添加到广播。com.google.android.gms
其他要求
升级邀请流程还允许用户直接从流程中执行操作系统升级。
为了实现这一点,请公开一个自定义 Intent,Google 可以从升级邀请流程中调用该 Intent,以触发更新的下载。
广播用法示例
请参阅以下应用广播示例
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 参数应该是启动 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;
}
返回一个 Task,异步验证用户是否有资格获得升级邀请。生成的布尔值指示用户是否有资格。
invokeUpgradeInvite
Task<Void> invokeUpgradeInvite();
调用升级邀请 Activity。生成的 _Task _对象指示启动 Activity 时是否发生错误。
错误代码
两种 API 方法都可能因 com.google.android.gms.common.api.ApiException 类型的异常而失败。在这种情况下,调用者应预期稍后重试。预期的 通用状态代码)包括
- INTERNAL_ERROR - 用于底层逻辑流程中的任何错误
- TIMEOUT - 如果请求无法及时处理
- API_NOT_CONNECTED - 当 API 不可用时(即,UpgradeParty 模块尚未准备就绪)
- NETWORK_ERROR - 由于网络错误,请求无法处理
- DEVELOPER_ERROR - 不允许调用包访问 UpgradeParty API
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);
}
});
}