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 rápidamente y minimizar la interrupción de sus usuarios.

Por defecto, aquí es cómo Capgo maneja las actualizaciones de la aplicación:

  1. Al iniciar la aplicación, el plugin Capgo verifica si hay una nueva actualización disponible.

  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 que se complete la descarga, Capgo espera a que el usuario la ponga en segundo plano o la elimine por completo.

  4. Cuando el usuario inicie la aplicación por primera vez, estará ejecutando la versión actualizada de la aplicación.

Este flujo garantiza que los usuarios siempre estén ejecutando la versión más reciente de su aplicación, sin que nunca sean interrumpidos por solicitudes de actualización o tengan que esperar por las descargas.

Why This Approach?

¿Por qué este enfoque?

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

  • No se interrumpe a los usuarios con solicitudes de actualización o se les obliga a esperar a que se descarguen en medio de una sesión.

  • Las actualizaciones se aplican de manera suave entre sesiones, por lo que la experiencia de iniciar 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 su aplicación, puede 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 con gracia 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 (consulte a continuación).

En algunos casos, puede desear tener más control sobre exactamente cuándo se aplica una actualización. Por ejemplo, puede querer 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 un 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 la aplicación ha estado en segundo plano durante al menos 60 segundos.

Las condiciones de retraso disponibles son:

  • date: Esperar hasta después de una fecha/hora específica para aplicar la actualización.
  • background: Esperar un mínimo de duración después de que la aplicación esté en segundo plano para aplicar la actualización.
  • nativeVersion: Esperar a que se instale un binario nativo con una versión mínima antes de aplicar la actualización.
  • kill: Esperar hasta el próximo evento de eliminación de la aplicación para aplicar la actualización.

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

Para 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 eliminación. Capgo admite esto a través de la autoUpdate política en su configuración de Capacitor.

autoUpdate is set in your capacitor.config.ts archivo, no en JavaScript code. Soporta estos valores:

  • false o 'off': Deshabilitar Actualización Automática
  • true o 'atBackground' (por defecto): Descargar automáticamente e instalar cuando la aplicación se mueva al fondo
  • 'atInstall': Aplicar inmediatamente solo después de una instalación fresca o actualización de aplicación nativa, en caso contrario, utilice el flujo de fondo
  • 'onLaunch': Aplicar inmediatamente al inicio de la aplicación, en caso contrario, utilice el flujo de fondo después del chequeo de inicio
  • 'always': Aplicar inmediatamente cada vez que se ejecute la Actualización Automática
  • 'onlyDownload': Descargar automáticamente, emitir updateAvailable, y nunca establecer el siguiente paquete automáticamente
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 when using instant apply with autoSplashscreen
},
},
};
export default config;

Con autoUpdate: 'always', Capgo aplicará inmediatamente una actualización tan pronto como se complete la descarga durante una verificación de actualizaciones, incluso si el usuario está utilizando la aplicación activamente. Sin la verificación periódica habilitada, esto significa que las actualizaciones solo se aplicarán cuando la aplicación inicie o reanude desde el fondo.

Tenga en cuenta que debido a que autoUpdate es una configuración nativa, los modos de aplicación instantánea requieren algún manejo adicional 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',
},
},
};

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

Para hacer que los modos de aplicación instantánea sean más fáciles de usar, Capgo proporciona autoSplashscreen una opción que gestiona automáticamente el ocultamiento de la pantalla de bienvenida por usted (disponible desde la versión 7.6.0):

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

Cuando autoSplashscreen está habilitado:

  • El plugin oculta automáticamente la pantalla de bienvenida cuando se aplica una actualización
  • El plugin oculta automáticamente la pantalla de bienvenida cuando no es necesario ninguna actualización
  • No necesita escuchar manualmente appReady o llamar a SplashScreen.hide()

Si prefiere tener control manual o necesita lógica personalizada, puede deshabilitar autoSplashscreen y manejarlo usted mismo:

import { CapacitorUpdater } from '@capgo/capacitor-updater';
import { SplashScreen } from '@capacitor/splash-screen';
CapacitorUpdater.addListener('appReady', () => {
// Hide splash screen
SplashScreen.hide();
});
CapacitorUpdater.notifyAppReady();

El appReady evento se dispara una vez que la aplicación ha terminado de inicializarse y aplicar cualquier actualización pendiente. Este es el punto en el que es seguro mostrar la interfaz de usuario de la aplicación, ya que garantiza que el usuario vea la versión más reciente.

Además de manejar el appReady evento, recomendamos establecer la opción de configuración 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, ayudando a mantener la ubicación del usuario en la aplicación y reduciendo la confusión.

Si no manejas el appReady evento y estableces keepUrlPathAfterReload cuando se utiliza un modo de aplicación instantáneo, el usuario puede ver brevemente una versión obsoleta de la aplicación, ser devuelto a la ruta inicial o ver un destello mientras se aplica la actualización.

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

  • El usuario puede ver un destello breve o un estado de carga mientras se aplica la actualización si no manejas correctamente la pantalla de bienvenida (ya sea con autoSplashscreen o manual appReady manejo de eventos).
  • 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 podría desorientarlo.
  • Tendrá que manejar con cuidado la guardado y restauración del estado para asegurar una transición suave.

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

  • Usar autoSplashscreen: true para la configuración más simple, o manejar manualmente el appReady evento si necesita lógica personalizada.
  • Establecer keepUrlPathAfterReload a true para preservar 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.
  • Practicar rigurosamente el comportamiento de actualización de la aplicación para asegurarse de que no haya transiciones bruscas, pérdida de estado o cambios de ubicación desorientadores.

En la mayoría de los casos, el comportamiento de actualización predeterminado proporciona la mejor relación entre entregar actualizaciones rápidamente y minimizar la interrupción. Pero para aplicaciones con necesidades específicas, Capgo proporciona la flexibilidad para personalizar cuándo y cómo se aplican las actualizaciones.

Sigue adelante desde Comportamiento de actualización

Sección titulada “Sigue adelante desde Comportamiento de actualización”

Si está utilizando Comportamiento de actualización para planificar la entrega de actualizaciones en vivo, conecte con Capgo Actualizaciones en vivo para el flujo de trabajo del producto en Capgo Actualizaciones en vivo, Resumen para los detalles de implementación en Resumen, Características para la implementación detallada en Características, Tipos de actualización para la implementación detallada en Tipos de actualización, y Paso a paso para la implementación detallada en Paso a paso.