__CAPGO_KEEP_0__ - Actualizaciones en Vivo para Aplicaciones __CAPGO_KEEP_1__

Actualizar comportamiento

When se lanza una actualización a su aplicación Capgo, probablemente querrá que sus usuarios reciban esa actualización lo antes posible. Pero también no quiere que interrumpan su experiencia obligándolos a esperar a que se descargue o reinicie la aplicación en medio de una sesión.

Capgo’s comportamiento de actualización está diseñado para encontrar un equilibrio entre entregar actualizaciones rápidamente y minimizar la interrupción de sus usuarios.

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

  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 que se complete la descarga, Capgo espera a que el usuario ponga la aplicación en segundo plano.

  4. Cuando el usuario vuelva a llevar la aplicación al primer plano, 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 que nunca sean interrumpidos por solicitudes de actualización o obligados a esperar a que se descargue.

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

  • Los usuarios no se interrumpen con solicitudes de actualización o se ven obligados a esperar descargas 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.

  • Puedes entregar actualizaciones con frecuencia sin preocuparte 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 con gracia cuando la aplicación se reanude.

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

  • Considerando 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 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 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: Espera a que se instale una versión binaria nativa con una versión mínima antes de aplicar la actualización.
  • kill: Espera hasta que ocurra el próximo evento de muerte de la aplicación para aplicar la actualización.

Puedes 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, es posible que desees 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 tu configuración de Capacitor.

autoUpdate está configurado en tu capacitor.config.ts archivo, no en JavaScript code. Soporta estos valores:

  • false o 'off': Desechar las comprobaciones de actualizaciones automáticas
  • true o 'atBackground' (por defecto): Comprueba y descarga automáticamente en cada comprobación de primer plano, luego aplica la actualización la próxima vez que la aplicación se mueva al segundo plano
  • 'atInstall': Aplica de inmediato solo después de una instalación fresca o actualización de tienda de aplicaciones nativa; en caso contrario, utilice "atBackground" comportamiento
  • 'onLaunch': Aplica de inmediato solo cuando la aplicación se trae al primer plano desde un estado de muerte (arranque frío). Después de la primera comprobación, caiga en "atBackground" comportamiento
  • 'always': Verificar en cada transición de primer plano y aplicar inmediatamente siempre que esté disponible una actualización
  • 'onlyDownload': Verificar y descargar automáticamente, emitir updateAvailable, y nunca establecer el siguiente paquete o aplicar una actualización 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 verifica en cada transición de primer plano y aplica una actualización inmediatamente tan pronto como se complete la descarga durante esa verificación, incluso si el usuario está utilizando activamente la aplicación. Las verificaciones periódicas controladas por periodCheckDelay pueden desencadenar el mismo comportamiento de aplicación inmediata mientras la aplicación permanece abierta.

Ten 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.

If you want Capgo to check and download updates automatically but never apply them automatically, use autoUpdate: 'onlyDownload':

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

Sección titulada “Descargando Automáticamente Sin Aplicar” updateAvailable después de descargar un paquete. Su aplicación puede decidir cuándo llamar CapacitorUpdater.set() o mostrar su propia solicitud de actualización.

Gestión Automática de Pantalla de Presentación

Sección titulada “Gestión Automática de Pantalla de Presentación”

Para hacer que los modos de aplicación instantánea sean más fáciles de usar, Capgo proporciona una autoSplashscreen opción que automatiza la ocultación de la pantalla de presentación para 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 presentación cuando se aplica una actualización
  • El plugin oculta automáticamente la pantalla de presentación cuando no se necesita una actualización
  • No necesita escuchar manualmente para appReady eventos o llamadas SplashScreen.hide()

Manipulación de Pantalla de Presentación Manual

Sección titulada “Manipulación de Pantalla de Presentación Manual”

Si prefieres tener control manual o necesitas lógica personalizada, puedes deshabilitar autoSplashscreen y manejarlo tú 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 El 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 tu aplicación, ya que garantiza que el usuario verá la última versión.

Además de manejar el appReady evento, recomendamos establecer la keepUrlPathAfterReload opción de configuración a 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.

If no manejas el evento y estableces appReady cuando se utiliza un modo de aplicación instantánea, 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. keepUrlPathAfterReload Usar un modo de aplicación instantánea puede ser útil para entregar correcciones críticas de errores o parches de seguridad, pero conlleva algunos inconvenientes:

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

  • o manejo manual del evento). autoSplashscreen 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. appReady La ubicación del usuario en la aplicación puede perderse si
  • no se establece, lo que puede desorientarlo.
  • Debes manejar cuidadosamente la salvaguarda y restauración del estado para asegurar una transición suave. keepUrlPathAfterReload Si habilitas la aplicación instantánea, recomendamos:
  • Si no manejas el evento y estableces

cuando se utiliza un modo de aplicación instantánea, 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.

  • Usando autoSplashscreen: true para la configuración más sencilla, o manejar manualmente el appReady evento si necesita lógica personalizada.
  • Configuración keepUrlPathAfterReload a true 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.
  • Pruebas exhaustivas del 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.

Si está utilizando Actualizar Comportamiento 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 el detalle de implementación en Resumen, Características para el detalle de implementación en Características, Tipos de Actualizaciones para el detalle de implementación en Tipos de Actualizaciones, y Iniciación para el detalle de implementación en Iniciación.