Compartir a través de


Distribución de App Center: actualizaciones en la aplicación de Unity

Importante

Visual Studio App Center se retiró el 31 de marzo de 2025, excepto las características de análisis y diagnóstico, que seguirán siendo compatibles hasta el 30 de junio de 2026. Más información.

La distribución de App Center permite a los usuarios o evaluadores instalar nuevas versiones de una aplicación una vez que la distribuya a través de App Center. Una vez habilitado, el SDK presenta un cuadro de diálogo de actualización a los usuarios para descargar o posponer la instalación de la actualización más reciente. Una vez que decidan actualizar, el SDK comenzará a actualizar la aplicación.

Importante

El SDK de distribución para Unity no admite UWP. Las instrucciones de esta página solo cubren Android e iOS.

Advertencia

Google Play considera el código de actualización desde la aplicación como comportamiento malintencionado incluso si no se usa en tiempo de ejecución. Quite este código como se indica en esta sección antes de enviar la aplicación a Google Play. Si no se quita el código de actualización desde la aplicación, puede provocar incumplimiento y eliminación de la aplicación de Google Play.

Nota:

Si estás ejecutando pruebas automatizadas de IU, las actualizaciones dentro de la aplicación habilitadas bloquearán tus pruebas automatizadas de IU, ya que intentarán autenticarse contra el back-end de App Center. Se recomienda deshabilitar las actualizaciones desde la aplicación para las pruebas de IU.

Añade actualizaciones en la aplicación

Añade el módulo Distribuir de App Center

El SDK de App Center está diseñado con un enfoque modular: un desarrollador solo necesita integrar los módulos de los servicios que les interesan.

Siga los documentos de introducción de Unity si aún no ha configurado e iniciado el SDK en la aplicación. Asegúrese de importar el paquete de Distribución de App Center. Su nombre debe tener el formato AppCenterDistribute-v{version}.unitypackage.

Nota:

Android 10 o superior tiene restricciones en la actividad de inicio desde segundo plano. Consulte el artículo acerca de las restricciones para el inicio de actividades desde el segundo plano.

Nota:

Las aplicaciones que se ejecutan en Android 10 (Go Edition) no pueden recibir el permiso SYSTEM_ALERT_WINDOW . Consulte el artículo sobre SYSTEM_ALERT_WINDOW en dispositivos Go.

Nota:

A partir de Android 11, ACTION_MANAGE_OVERLAY_PERMISSION las intenciones siempre llevan al usuario a la pantalla configuración de nivel superior, donde el usuario puede conceder o revocar los permisos para las SYSTEM_ALERT_WINDOW aplicaciones. Consulte el artículo sobre las actualizaciones de permisos en Android 11.

Eliminación de actualizaciones desde la aplicación para compilaciones de Google Play

Google Play considera el código de actualización desde la aplicación como comportamiento malintencionado incluso si no se usa en tiempo de ejecución. Quite este código antes de enviar la aplicación a Google Play. Si no se quita el código de actualización desde la aplicación, puede provocar incumplimiento y eliminación de la aplicación de Google Play. Para eliminar el código nativo de actualizaciones dentro de la aplicación, desactive la casilla Use Distribute en la sección Distribuir del objeto de juego con AppCenterBehavior adjunto.

Uso del grupo de distribución privado

De forma predeterminada, Distribute usa un grupo de distribución público. Si desea usar un grupo de distribución privado, deberá cambiar UpdateTrack a Privado. Para ello, selecciona Privado en la lista desplegable Pista de actualización dentro de la sección Distribuir del objeto del juego con AppCenterBehavior adjunto.

Al usar la pista privada, se abrirá una ventana del explorador para autenticar al usuario. Todas las comprobaciones de actualización posteriores obtendrán la versión más reciente en la pista privada.

Si un usuario está en la pista privada, significa que después de la autenticación correcta, obtendrá la versión más reciente de cualquier grupo de distribución privado del que sea miembro. Si un usuario está en la pista pública, significa que obtendrá la versión más reciente de cualquier grupo de distribución público.

Deshabilitar comprobación automática de actualizaciones

De forma predeterminada, el SDK comprueba automáticamente las nuevas versiones:

  • Cuando se inicia la aplicación.
  • Cuando la aplicación entra en segundo plano y luego vuelve a estar en primer plano.
  • Al habilitar el módulo Distribuir, si se ha deshabilitado anteriormente.

Si desea comprobar las nuevas versiones manualmente, puede deshabilitar la comprobación automática de la actualización.

Para ello, desactive la casilla Comprobación automática de actualizaciones en la sección Distribuir del objeto de juego con AppCenterBehavior conectado.

A continuación, puede usar la CheckForUpdate API que se describe en la sección siguiente.

Comprobar manualmente la actualización

Distribute.CheckForUpdate();

Esto envía una solicitud a App Center y muestra un cuadro de diálogo de actualización en caso de que haya disponible una nueva versión.

Nota:

Una comprobación manual de la llamada de actualización funciona incluso cuando se habilitan las actualizaciones automáticas. Se omite una comprobación manual de la actualización si ya se está realizando otra comprobación. La comprobación manual de la actualización no se procesará si el usuario ha pospuesto actualizaciones (a menos que la versión más reciente sea una actualización obligatoria).

Personalización o localización del cuadro de diálogo de actualización en la aplicación

1. Personalizar o localizar texto

Puede proporcionar sus propias cadenas de recursos si desea localizar el texto que se muestra en el cuadro de diálogo de actualización. Examine los archivos de cadena de iOS en este archivo de recursos de iOS y para Android en este archivo de recursos de Android. Use el mismo nombre o clave de cadena y especifique el valor localizado que se reflejará en el cuadro de diálogo en sus propios archivos de recursos de la aplicación.

2. Personalizar el cuadro de diálogo de actualización

Puede personalizar la apariencia del cuadro de diálogo de actualización predeterminado mediante la implementación de la ReleaseAvailable devolución de llamada.

Advertencia

Debe registrar el callback en el método Awake de un MonoBehaviour en la primera escena que cargue la aplicación para evitar perder cualquier invocación del callback de liberación.

// In this example, OnReleaseAvailable is a method name in same class
Distribute.ReleaseAvailable = OnReleaseAvailable;

Esta es una implementación de callback que reemplaza el cuadro de diálogo del SDK por lógica personalizada.

bool OnReleaseAvailable(ReleaseDetails releaseDetails)
{
    // Look at releaseDetails public properties to get version information, release notes text or release notes URL
    string versionName = releaseDetails.ShortVersion;
    string versionCodeOrBuildNumber = releaseDetails.Version;
    string releaseNotes = releaseDetails.ReleaseNotes;
    Uri releaseNotesUrl = releaseDetails.ReleaseNotesUrl;

    // (Do something with the values if you want)

    // On mandatory update, user can't postpone
    if (releaseDetails.MandatoryUpdate)
    {
        // Force user to update (you should probably show some custom UI here)
        Distribute.NotifyUpdateAction(UpdateAction.Update);
    }
    else
    {
        // Allow user to update or postpone (you should probably show some custom UI here)
        // "GetUserUpdateAction()" isn't part of the SDK; it just represents a way of getting user response.
        // This blocks the thread while awaiting the user's response! This example shouldn't be used literally
        UpdateAction updateAction = GetUserUpdateAction();
        Distribute.NotifyUpdateAction(updateAction);
    }
    // Return true if you're using your own UI to get user response, false otherwise
    return true;
}

Notas de implementación para Android:

Como se muestra en el ejemplo, debe llamar a Distribute.NotifyUpdateAction(UpdateAction.UPDATE); o Distribute.NotifyUpdateAction(UpdateAction.POSTPONE); si su devolución de llamada devuelve true.

Si no llama a NotifyUpdateAction, la devolución de llamada se repetirá en cada cambio de actividad.

El callback puede ser llamado nuevamente con la misma versión si la actividad cambia antes de que la acción del usuario sea notificada al SDK.

Este comportamiento es necesario para cubrir los siguientes escenarios:

  • La aplicación se envía al fondo (como presionar HOME) y luego se reanuda en otra actividad.
  • La actividad está superpuesta por otra sin salir de la aplicación (como al hacer clic en algunas notificaciones).
  • Escenarios similares a los anteriores.

En ese caso, la actividad que hospeda el cuadro de diálogo podría reemplazarse sin interacción del usuario. Por lo tanto, el SDK vuelve a llamar al agente de escucha para poder restaurar el cuadro de diálogo personalizado.

3. Ejecutar código si no se encuentra ninguna actualización

En los casos en los que el SDK comprueba si hay actualizaciones y no encuentra ninguna actualización disponible más reciente que la usada actualmente, se invoca una NoReleaseAvailable devolución de llamada. Esto le permite ejecutar código personalizado en estos escenarios. Debe registrar la devolución de llamada antes de llamar AppCenter.Start como se muestra en el ejemplo siguiente:

// In this example OnNoReleaseAvailable is a method name in same class
Distribute.NoReleaseAvailable = OnNoReleaseAvailable;
AppCenter.Start(...);
void OnNoReleaseAvailable()
{
    AppCenterLog.Info(LogTag, "No release available callback invoked.");
}

## Enable or disable App Center Distribute at runtime

You can enable and disable App Center Distribute at runtime. If you disable it, the SDK won't provide any in-app update functionality but you can still use the Distribute service in the App Center portal.

To disable the Distribute service, use the following code:

```csharp
Distribute.SetEnabledAsync(false);

Para habilitar App Center Distribute de nuevo, use la misma API, pero pase true como parámetro.

Distribute.SetEnabledAsync(true);

Esta API es asincrónica, puede obtener más información en nuestra guía de API asincrónicas de App Center .

No es necesario esperar esta llamada para que otras llamadas API (como IsEnabledAsync) sean coherentes.

El estado se conserva en el almacenamiento del dispositivo en los inicios de la aplicación.

Compruebe si App Center Distribute está habilitado

También puede comprobar si App Center Distribute está habilitado:

Distribute.IsEnabledAsync();

Esta API es asincrónica, puede obtener más información en nuestra guía de API asincrónicas de App Center .

Habilitación de actualizaciones desde la aplicación para compilaciones de depuración

De forma predeterminada, las actualizaciones en la aplicación solo están habilitadas para las compilaciones de versión.

Para habilitar actualizaciones en la aplicación para las compilaciones de depuración en Android e iOS, marque la casilla Habilitar distribuir en depuración en la sección Distribuir del objeto de juego al que está conectado AppCenterBehavior.

Comportamiento de App Center

En Unity, una compilación depurable es una compilación con una opción de compilación de desarrollo activada.

Realice la limpieza justo antes de que se cierre la aplicación para la actualización.

Nota:

Este método de retorno solo funciona en iOS.

Registre la devolución de llamada como se muestra en el ejemplo siguiente:

// In this example, OnWillExitApp is a method name in same class
Distribute.WillExitApp = OnWillExitApp;
void OnWillExitApp()
{
    // Perform clean up here
}

Con eso, OnWillExitApp() se invocará cuando Distribute esté a punto de cerrarse.

Funcionamiento de las actualizaciones desde la aplicación

Nota:

Para que las actualizaciones desde la aplicación funcionen, se debe descargar una compilación de aplicación desde el vínculo. No funcionará si se instala desde un IDE o manualmente.

La característica de actualizaciones desde la aplicación funciona de la siguiente manera:

  1. Esta característica solo funciona con compilaciones RELEASE (de forma predeterminada) que se distribuyen mediante el servicio Distribuir de App Center . No funcionará si la característica acceso guiado de iOS está activada.
  2. Una vez que integre el SDK, compile una versión de lanzamiento de la aplicación y cárgala en App Center. Los usuarios del grupo de distribución reciben una notificación sobre la nueva versión por correo electrónico.
  3. Cuando cada usuario abra el vínculo en su correo electrónico, la aplicación se instalará en su dispositivo. Es importante que usen el vínculo de correo electrónico para instalar: no se admite la carga lateral. Cuando se descarga una aplicación desde el vínculo, el SDK guarda información importante de las cookies para comprobar si hay actualizaciones más adelante; de lo contrario, el SDK no tiene esa información clave.
  4. Si la aplicación establece la pista en privada, se abrirá un explorador para autenticar al usuario y habilitar las actualizaciones desde la aplicación. El explorador no se volverá a abrir siempre y cuando la información de autenticación permanezca válida incluso cuando vuelva a la pista pública y vuelva a privada más tarde. Si la autenticación del explorador se realiza correctamente, el usuario se redirige automáticamente a la aplicación. Si la pista es pública (que es el valor predeterminado), el siguiente paso se produce directamente.
  5. Una nueva versión de la aplicación muestra el cuadro de diálogo de actualización en la aplicación que pide a los usuarios que actualicen la aplicación si es:
    • Ios:
      • un valor mayor de CFBundleShortVersionString o
      • un valor igual de CFBundleShortVersionString pero un valor mayor de CFBundleVersion.
      • las versiones son las mismas, pero el identificador único de compilación es diferente.
    • Android:
      • un valor mayor de versionCode o
      • un valor igual de versionCode pero un valor diferente de versionName.

Sugerencia

Si carga el mismo .apk/.ipa una segunda vez, el cuadro de diálogo no aparecerá como los archivos binarios son idénticos. En iOS, si carga una nueva compilación con las mismas propiedades de versión, se mostrará el cuadro de diálogo de actualización. La razón de esto es que es un binario diferente. En Android, los archivos binarios se consideran iguales si ambas propiedades de versión son las mismas.

¿Cómo se prueban las actualizaciones desde la aplicación?

Debe cargar compilaciones de versión (que usen el módulo Distribuir del SDK de App Center) en el Portal de App Center para probar las actualizaciones en la aplicación, incrementando los números de versión cada vez.

  1. Cree la aplicación en el portal de App Center si aún no lo ha hecho.
  2. Cree un nuevo grupo de distribución y asígnele un nombre.
  3. Agréguese (o a todas las personas que quiera incluir en la prueba de la característica de actualización en la aplicación). Use una dirección de correo electrónico nueva o desechada para este paso, una que aún no se ha usado con esta aplicación. Esto garantiza que su experiencia esté cerca de la experiencia de los evaluadores reales.
  4. Cree una nueva compilación de la aplicación que incluya App Center Distribute y contenga la lógica de configuración, como se describe a continuación. Si el grupo es privado, no olvide establecer la pista de actualización privada desde la aplicación antes de empezar a usar la UpdateTrack propiedad .
  5. Haga clic en el botón Distribuir nueva versión en el portal y cargue la compilación de la aplicación.
  6. Una vez finalizada la carga, haga clic en Siguiente y seleccione el grupo Distribución que creó anteriormente como Destino de esa distribución de la aplicación.
  7. Revise la Distribución y distribuya el build a su grupo de pruebas dentro de la aplicación.
  8. Las personas de ese grupo recibirán una invitación para ser evaluadores de la aplicación. Una vez que acepten la invitación, pueden descargar la aplicación desde el portal de App Center desde su dispositivo móvil. Una vez instaladas las actualizaciones desde la aplicación, estará listo para probar las actualizaciones desde la aplicación.
  9. Aumente la versión de la aplicación (CFBundleShortVersionString o CFBundleVersion para iOS, versionCode para Android).
  10. Construya la versión de lanzamiento de su aplicación y suba una nueva versión como hizo en el paso anterior. Distribuya al grupo de distribución que creó anteriormente. A los miembros del grupo de distribución se les pedirá una nueva versión la próxima vez que se inicie la aplicación.

Sugerencia

Vea la información sobre cómo usar App Center Distribute para obtener información más detallada sobre los grupos de distribución , etc. Aunque es posible usar App Center Distribute para distribuir una nueva versión de la aplicación sin agregar ningún código, agregar App Center Distribute al código de la aplicación dará lugar a una experiencia más fluida para los evaluadores y los usuarios a medida que obtienen la experiencia de actualización desde la aplicación.