Invitación a la actualización de Android

La invitación a la actualización es un flujo de usuarios que muestra las nuevas funciones clave incluidas en la actualización principal del SO Android disponible actualmente.

El flujo está diseñado para ayudar a convencer a los usuarios de que actualicen sus dispositivos a la versión más reciente del SO.

Una vez que un dispositivo tiene una actualización del SO pendiente de aprobación del usuario, este recibe una notificación push en la que se muestran las funciones nuevas y se lo invita a realizar la actualización.

Para habilitar la Invitación a actualizar para tu SO Android, regístrate con el formulario para solicitar la activación de la Invitación a actualizar para Android.

Personaliza la experiencia de la invitación para actualizar

Puedes personalizar la experiencia de la invitación a la actualización de las siguientes maneras:

  • Quita las funciones irrelevantes.
  • Actualiza el idioma en los bloques de texto.
  • Modifica las animaciones, colores y fuentes para que coincidan con tu marca.

Para personalizar el flujo, revisa los lineamientos de la Guía de estilo de la invitación a la actualización y, luego, incluye la información de personalización en el formulario para solicitar la activación de la invitación a la actualización de Android.

Guía de estilo de invitación a la actualización

Usa esta guía de estilo para modificar el aspecto de la invitación a la actualización para que se adapte a tu marca (pantallas, colores y fuentes). Te recomendamos que mantengas los tamaños y la estructura cerca del diseño original.

El flujo de invitación a la actualización presenta los siguientes tres componentes:

  • Pantalla de introducción
  • Pantalla de funciones
  • Pantalla de cierre
Figura 1: Los tres tipos de pantallas en el flujo de invitación a la actualización

Una animación en cada pantalla ayuda a explicar cada función.

Pantalla de introducción

La pantalla de presentación contiene una breve animación que da la bienvenida al usuario y lo alienta a iniciar el flujo que se muestra en la pantalla de presentación.

Diseño
Figura 2: Diseño del esquema de página para la pantalla de presentación de la invitación a la actualización

La animación del dispositivo siempre consta de lo siguiente:

  • Fondo blanco y formas coloridas
  • Marco del dispositivo
  • Contenido de la IU
Estilos

Si eliges adaptar el estilo de Material You, puedes usar los colores y las formas predeterminados que se muestran en el ejemplo.

Figura 3: Esquema de colores predeterminado para el flujo de invitación a la actualización.

Si usas tu propio color de marca, asegúrate de que funcione bien con el fondo de la IU.

Movimiento

Opción 1: Con un reloj en la pantalla principal

  1. Los números ingresan a la pantalla.
  2. Los números se mueven hacia el centro y disminuyen de tamaño. Aparecerá el marco del teléfono celular.
  3. El teléfono disminuye de tamaño. Las formas comienzan a entrar en la pantalla.
  4. Se completó la animación. Las formas siguen moviéndose suavemente.
Figura 4: Diseño de esquema de página para la animación de la pantalla de introducción de la invitación a la actualización con un reloj.
Figura 5: Ejemplo de animación para la pantalla de introducción con un reloj.

Opción 2: No hay reloj en la pantalla principal

  1. El teléfono celular ingresa a la pantalla.
  2. El teléfono se mueve hacia el centro mientras aumenta de tamaño. Las formas comienzan a entrar en la pantalla.
  3. El teléfono alcanza el tamaño máximo y las formas siguen moviéndose.
Figura 6: Diseño de esquema de página para la animación de la pantalla de introducción de la invitación a actualizar sin un reloj.
Figura 7: Ejemplo de animación para la pantalla de introducción sin un reloj.

Pantalla de funciones

Cada pantalla de funciones destaca una característica del nuevo SO.

Diseño
Figura 8: Diseño de esquemas de página para las pantallas de la función de invitación a la actualización.

La animación del dispositivo siempre consta de lo siguiente:

  • Fondo colorido
  • Marco del dispositivo
  • Contenido de la IU
Estilos
  • Elige un color de fondo que funcione bien con el contenido de la IU y con el aspecto general.
  • Dentro de las pantallas, establece tamaños de fuente que sean fáciles de leer. Si es necesario, establece tamaños de fuente más grandes.
Movimiento

Graba una animación del flujo de cada función, incluidas las interacciones táctiles. Exporta las grabaciones como archivos Lottie.

Pantalla de cierre

La pantalla de cierre completa el flujo. Les indica a los usuarios que ya revisaron todas las pantallas.

Diseño
Figura 9: Diseño de esquema de página para la pantalla de cierre de la invitación a actualizar.

La animación del dispositivo siempre consta de lo siguiente:

  • Semicírculo en el fondo (más formas animadas)
  • Marco del dispositivo
  • Contenido de la IU
Estilos
  • Selecciona un color de fondo que funcione bien con el contenido de la IU y con el aspecto general.
  • Usa una forma de medio círculo.
Movimiento

Sigue el flujo de animación estándar de la pantalla de cierre:

  1. El teléfono celular se mueve un poco hacia arriba.
  2. Aparecerá un círculo en el fondo.
  3. Formas que aparecen detrás del teléfono celular.
  4. Las formas vuelan del fondo como confeti.
Figura 10: Diseño del esquema de página para la animación de la pantalla de cierre de la invitación a la actualización.
Figura 11: Ejemplo de animación de cierre en pantalla.

Prueba el flujo de invitación a la actualización

  1. En el dispositivo Android, ve a Configuración > Google > Depurar el grupo de actualización.
  2. Prepara el activador de la invitación a la actualización para el SO del dispositivo relevante (según la versión actual del SO y el flujo específico de la invitación a la actualización que se probará). Puedes elegir una de estas opciones:
    1. Haz clic en Escribir actualización falsa (versión actual). (por ejemplo, si ejecutas el SO Android 13, se activará el flujo de prueba de Android 13).
    2. Haz clic en Escribir actualización pendiente (versión actual + 1). (por ejemplo, si ejecutas el SO Android 12, se activará el flujo de prueba de Android 13).
    3. Haz clic en Informar actualización del SO.
  3. Haz clic en la notificación recibida o en Abrir invitación de actualización.

Opciones de activación para la invitación de actualización

Existen 3 maneras diferentes de activar el flujo de invitación a la actualización: 1. automática 2. transmisión 3. Se activó el SDK de Play Services

Automático: Notificación activada por Google (solo para dispositivos que ejecutan gOTA)

En el caso de los dispositivos OEM que ejecutan gOTA, la integración es automática y no se requieren pasos de integración de la invitación a la actualización. Una vez que se detecte una actualización importante del SO pendiente, se enviará una notificación push al dispositivo desde los Servicios de Google Play, lo que llevará al flujo de invitación a la actualización.

Android Broadcast: Notificación activada por Google (recomendado)

Una transmisión de app es la forma más sencilla y recomendada de integrar el flujo de invitación para actualizar.

Un receptor de emisión te permite activar el flujo de invitación a la actualización desde tu app con un mensaje de emisión. La transmisión envía una notificación push al dispositivo desde los Servicios de Google Play, lo que lleva al flujo de invitación a la actualización.

Requisitos previos a la transmisión

Para preparar tu app, completa los pasos que se indican en las siguientes secciones.

Asegúrate de que los archivos de configuración de tu app usen los siguientes valores:

  • Una minSdkVersion de 14 o posterior
  • Una compileSdkVersion de 28 o superior
  • Un usesPermission de android.permission.RECOVERY

Envía el anuncio

A continuación, se incluyen las instrucciones para que la app (o el código) del OEM envíe una transmisión de Android para activar la notificación push:

  1. Envía una transmisión con la acción.

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. Agrega el paquete com.google.android.gms a la transmisión.

    com.google.android.gms
    

Requisitos adicionales

El flujo de invitación a la actualización también permite a los usuarios realizar la actualización del SO directamente desde el flujo.

Para que esto funcione, expone un intent personalizado al que Google pueda llamar desde el flujo de invitación a la actualización que activa la descarga de la actualización.

Ejemplo de uso de la transmisión

Consulta el siguiente ejemplo de una transmisión de aplicación:

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);

El valor de la clave EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER es un número entero que indica la versión pendiente del SO (en este ejemplo, la versión de Android que se instalará es 14). Se usa para determinar qué flujo de invitación a la actualización se activará.

SDK de Play Services: Solo activación de flujo

El SDK de terceros te permite activar el flujo de invitación a la actualización desde tu app o tus propias notificaciones OTA. Usa una API externa de terceros para activar el flujo de invitación a la actualización. Este método no se recomienda.

Requisitos previos

Para preparar tu app, completa los pasos que se indican en las siguientes secciones.

Asegúrate de que el archivo de compilación de tu app use los siguientes valores:

  • Una minSdkVersion de 14 o más
  • Una compileSdkVersion de 28 o superior

Cómo configurar tu app

Para configurar tu app, sigue estos pasos:

1. Extract the library from the provided .zip file, and place it in your

repositorio. 2. Agrega las dependencias del SDK de Google Growth al archivo Gradle a nivel de la app de tu módulo, que suele ser app/build.gradle:

   dependencies {
    implementation files('<PATH_TO_BINARY>/play-services-growth-16.1.0-eap04.aar')
   }
  1. Para proporcionar las dependencias del cliente, incluye las siguientes bibliotecas:

    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
    

Inicialización de la API

  1. Para inicializar un cliente, usa la clase UpgradeParty:

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. El parámetro de actividad debe ser el objeto de actividad que inicia.

Funciones de API

El UpgradePartyClient resultante expone la siguiente funcionalidad.

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;
}

Muestra una tarea que verifica de forma asíncrona si el usuario es apto para recibir una invitación de actualización. El valor booleano resultante indica si el usuario es apto o no.

InvoqueActualizarInvitar

Task<Void> invokeUpgradeInvite();

Invoca la actividad de invitación a la actualización. El objeto _Task_ resultante indica si se produjo un error cuando se inició la actividad.

Códigos de error

Es posible que ambos métodos de la API fallen con una excepción de tipo com.google.android.gms.common.api.ApiException. En esos casos, se espera que el llamador vuelva a intentarlo más adelante. Entre los códigos de estado comunes esperados, se incluyen los siguientes:

  • INTERNAL_ERROR: Para cualquier error en el flujo de la lógica subyacente
  • TIMEOUT: Si la solicitud no se pudo controlar de forma oportuna.
  • API_NOT_CONNECTED: Cuando la API no está disponible (es decir, el módulo UpgradeParty aún no está listo).
  • NETWORK_ERROR: No se pudo procesar la solicitud debido a errores de red.
  • DESARR_ERROR: El paquete que realiza la llamada no tiene permiso para acceder a la API de UpgradeParty.

Ejemplo de uso del 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);
             }
           });
   }