Saltar al contenido

Comportamiento de Actualización

Cuando liberes una actualización a tu aplicación Capgo, probablemente quieras que tus usuarios la reciban lo antes posible. Pero también no quieres interrumpir su experiencia obligándolos a esperar a que se descargue o reinicien la aplicación en medio de una sesión.

El comportamiento de actualización de Capgo está diseñado para encontrar un equilibrio entre entregar actualizaciones de manera rápida y minimizar la interrupción para tus usuarios.

Flujo de Actualización Predeterminado

Flujo de actualización por defecto

By default, here’s how Capgo handles app updates:

  1. Cuando la aplicación se mueve al primer plano, el plugin Capgo verifica si hay una nueva actualización disponible. Mientras la aplicación permanece abierta, también verifica de nuevo en un temporizador repetido controlado por periodCheckDelay (10 minutos por defecto).

  2. Si se encuentra una actualización, se descarga en segundo plano mientras el usuario continúa utilizando la versión actual de la aplicación.

  3. Una vez completada la descarga, Capgo espera a que el usuario envíe la aplicación al segundo plano.

  4. Cuando el usuario trae la aplicación a primer plano la próxima vez, estarán ejecutando la versión actualizada.

Este flujo garantiza que los usuarios siempre estén ejecutando la última versión de su aplicación, sin ser interrumpidos por solicitudes de actualización o tener que esperar a que se descarguen.

Aplicar actualizaciones en un evento de fondo o de eliminación tiene algunos beneficios clave para la experiencia del usuario:

  • Los usuarios no se ven interrumpidos por solicitudes de actualización ni obligados a esperar descargas en medio de una sesión.

  • Actualizaciones se aplican de manera suave entre sesiones, por lo que la experiencia de lanzar la aplicación siempre es fresca.

  • Puede entregar actualizaciones con frecuencia sin preocuparse por interrumpir a usuarios activos.

El principal inconveniente es que si un usuario envía a segundo plano y vuelve rápidamente a tu aplicación, pueden perder cualquier estado no guardado desde que se aplicó la actualización entre esas acciones.

Para mitigar esto, recomendamos:

  • Guardar el estado con frecuencia y restaurarlo suavemente cuando la aplicación se reanude.

  • Evitar actualizaciones muy frecuentes que modifican grandes partes del estado de la aplicación.

  • Considerar personalizar el comportamiento de la actualización para flujos sensibles (ver a continuación).

Personalizar Cuando Se Aplican Las Actualizaciones

Sección titulada “Personalizar Cuando Se Aplican Las Actualizaciones”

En algunos casos, puede desear tener más control sobre exactamente cuándo se aplica una actualización. Por ejemplo, puede desear asegurarse de que un usuario complete un flujo en curso antes de actualizar, o coordinar una actualización de la aplicación con un cambio en el lado del servidor.

Capgo proporciona una setDelay función que le permite especificar condiciones que deben cumplirse antes de que se instale una actualización:

import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setMultiDelay({
delayConditions: [
{
kind: 'date',
value: '2023-06-01T00:00:00.000Z',
},
{
kind: 'background',
value: '60000',
},
],
});

Este ejemplo retrasaría la instalación de una actualización hasta después del 1 de junio de 2023 Y el app haya estado en segundo plano durante al menos 60 segundos.

Las condiciones de retraso disponibles son:

  • date: Espera hasta después de una fecha/hora específica para aplicar la actualización.
  • backgroundEspera un mínimo de duración después de que la aplicación se ponga en segundo plano para aplicar la actualización.
  • nativeVersion: Espera a que se instale un binario nativo con una versión mínima antes de aplicar la actualización.
  • kill: Wait until the next app kill event to apply the update.

Puedes combinar y mezclar estas condiciones para controlar con precisión cuándo se instala una actualización.

For actualizaciones críticas o aplicaciones con un estado muy simple, puede querer aplicar una actualización tan pronto como se descargue, sin esperar a un evento de fondo o de muerte. Capgo admite esto a través de la autoUpdate política en su Capacitor config.

autoUpdate establecido en su capacitor.config.ts archivo, no en JavaScript code. Soporta estos valores:

  • false o 'off': Disable automatic update checks
  • true o 'atBackground' Verificar y descargar automáticamente en cada verificación de primer plano, luego aplicar la actualización la próxima vez que la aplicación se mueva al segundo plano
  • 'atInstall'Aplicar inmediatamente solo después de una instalación fresca o actualización de tienda de aplicaciones nativa; en otro caso use "atBackground" behavior
  • 'onLaunch'Aplicar inmediatamente solo cuando la aplicación se trae al primer plano desde un estado de muerte (inicio frío). Después de ese primer chequeo, recaer en "atBackground" behavior
  • 'always'Verifique en cada transición de primer plano y aplique inmediatamente siempre que esté disponible una actualización
  • 'onlyDownload'Verifique y descargue automáticamente, emita updateAvailable, y nunca establezca el siguiente paquete o aplique una actualización automáticamente.

Prueba una compilación nativa sin actualizaciones en vivo

Prueba una compilación nativa sin actualizaciones en vivo

Ver Prueba compilaciones nativas sin actualizaciones en vivo para la versión nativa, política de canal y configuración de CI.

import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: 'always', // or 'atInstall' for updates only on app install/update
autoSplashscreen: true,
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false, // Required for instant apply with autoSplashscreen
},
},
};
export default config;

With autoUpdate: 'always', Capgo checks on every foreground transition and immediately applies an update as soon as the download completes during that check, even if the user is actively using the app. Periodic checks controlled by periodCheckDelay can trigger the same immediate apply behavior while the app stays open.

Ten en cuenta que debido a autoUpdate que es una configuración nativa, los modos de aplicación instantánea requieren algunas manejas adicionales en su JavaScript code.

Si desea que Capgo compruebe y descargue actualizaciones automáticamente, pero nunca las aplique automáticamente, utilice autoUpdate: 'onlyDownload':

const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: 'onlyDownload',
},
},
};

In este modo, el plugin emite updateAvailable después de que se descarga un paquete. Su aplicación puede decidir cuándo llamar CapacitorUpdater.set() o mostrar su propia ventana de actualización.

Gestión Automática de Pantalla de Bienvenida

Gestión automática de pantalla de bienvenida

Modos de aplicación instantánea (""atInstall", "onLaunch", "always"y autoSplashscreen and @capacitor/splash-screen (Disponible desde la versión 7.6.0). Instale el plugin y mantenga visible la pantalla de carga hasta que Capgo la oculte.

const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: 'always', // or 'atInstall'
autoSplashscreen: true, // Automatically hide splashscreen
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false,
},
},
};

When autoSplashscreen Copy to clipboard

  • The plugin oculta automáticamente la pantalla de bienvenida cuando se aplica una actualización
  • The plugin oculta automáticamente la pantalla de bienvenida cuando no se necesita ninguna actualización
  • No necesita escuchar manualmente appReady events o llamadas SplashScreen.hide()

Keep autoSplashscreen: truecomo bien. No omita el plugin de pantalla de bienvenida o appReady tampoco omita el plugin de splash. autoSplashscreen para esto:

import { CapacitorUpdater } from '@capgo/capacitor-updater';
CapacitorUpdater.addListener('appReady', () => {
// Update is applied. autoSplashscreen already hid the splash.
});
CapacitorUpdater.notifyAppReady();

The appReady El evento se dispara una vez que la aplicación ha terminado de inicializarse y aplicar cualquier actualización pendiente.

Establecer keepUrlPathAfterReload para true cuando se utiliza un modo de aplicación instantánea. Esto preserva la ruta de la URL actual cuando la aplicación se recarga debido a una actualización.

Usar un modo de aplicación instantánea puede ser útil para entregar correcciones de errores críticas o parches de seguridad, pero conlleva algunos tradeofos:

  • El usuario puede ver un breve destello o estado de carga mientras se aplica la actualización si @capacitor/splash-screen está faltando o autoSplashscreen no está habilitado.
  • Si la actualización modifica el estado de la aplicación o la interfaz de usuario, el usuario puede ver un cambio disruptivo en medio de una sesión.
  • La ubicación del usuario en la aplicación puede estar perdida si keepUrlPathAfterReload no está configurado, lo que puede desorientarlo.
  • Deberá manejar cuidadosamente la conservación y restauración del estado para asegurar una transición suave.

Si habilita la aplicación instantánea, recomendamos:

  • Subiendo con npx @capgo/cli@latest bundle upload --delta para evitar que la descarga ralentice la experiencia del usuario.
  • Instalar @capacitor/splash-screen y configurar autoSplashscreen: true con launchAutoHide: false.
  • Configurar keepUrlPathAfterReload para true mantener la ubicación del usuario en la aplicación.
  • para mantener la ubicación del usuario en la aplicación.
  • Guardar y restaurar el estado de la aplicación según sea necesario para evitar perder el progreso del usuario.

In most cases, the default update behavior provides the best balance of delivering updates quickly and minimizing disruption. But for apps with specific needs, Capgo provides the flexibility to customize when and how updates are applied.

Continúa desde Comportamiento de Actualización

Sección titulada “Continúa desde Comportamiento de Actualización”

Si estás utilizando Comportamiento de Actualización para planificar la entrega de live update, conecta con Capgo Actualizaciones en Vivo para el flujo de trabajo del producto en Capgo Actualizaciones en vivo Overview para el detalle de implementación en Resumen Features para el detalle de implementación en Características. Tipos de Actualizaciones para los detalles de implementación en Tipos de Actualizaciones, y Getting Started para los detalles de implementación en Empezar.