__CAPGO_KEEP_0__ - Actualizaciones en Vivo para Aplicaciones __CAPGO_KEEP_1__

Comportamiento de actualización

Cuando liberes una actualización a tu aplicación Capgo, probablemente querrás 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 para tus usuarios.

Por defecto, aquí es 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 traer la aplicación al primer plano, estarán ejecutando la versión actualizada.

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 obligados a esperar por descargas.

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

  • Los usuarios no son interrumpidos por solicitudes de actualización o obligados a esperar por 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.

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

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

To mitigar esto, recomendamos:

  • Guardar el estado con frecuencia y restaurarlo de manera suave 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 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: Espera hasta después de una fecha/hora específica para aplicar la actualización.
  • background: Espera 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: Espera hasta el próximo evento de eliminación de la aplicación para aplicar la actualización.

Puedes mezclar 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, es posible que desees aplicar una actualización tan pronto como se descargue, sin esperar a un evento de segundo plano o eliminación. Capgo admite esto a través de autoUpdate política en tu Capacitor configuración.

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

  • false o 'off': Deshabilitar 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': Aplicar 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': Aplicar inmediatamente solo cuando la aplicación se trae a primer plano desde un estado de muerte (inicio frío). Después de ese primer chequeo, caer en la opción de "atBackground" comportamiento
  • 'always': Comprobar en cada transición de primer plano y aplicar inmediatamente siempre que esté disponible una actualización
  • 'onlyDownload': Comprobar y descargar automáticamente, emitir updateAvailable, y nunca establecer el siguiente paquete o aplicar una actualización automáticamente

Probar una compilación nativa sin actualizaciones en vivo

Sección titulada “Probar una compilación nativa sin actualizaciones en vivo”

Ver Probar compilaciones nativas sin actualizaciones en vivo para las salvaguardas de configuración de versión nativa, política de canal y 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 when using instant apply with autoSplashscreen
},
},
};
export default config;

Con autoUpdate: 'always', Capgo verificaciones en cada transición al primer plano y aplica una actualización inmediata 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.

Tenga en cuenta que porque autoUpdate es una configuración nativa, los modos de aplicación instantánea requieren algún manejo adicional en su JavaScript code.

Si deseas 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. Tu aplicación puede decidir cuándo llamar CapacitorUpdater.set() o mostrar su propia ventana de actualización.

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

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

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

La 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 la aplicación, ya que garantiza que el usuario verá la versión más reciente.

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

Si no manejas el appReady evento y estableces keepUrlPathAfterReload 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.

Usar un modo de aplicación instantáneo puede ser útil para entregar parches de seguridad o correcciones de errores críticos, 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.
  • Configurar keepUrlPathAfterReload a true 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.
  • Realizar 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.

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 Vista general Características para los detalles de implementación en Características Tipos de actualizaciones para los detalles de implementación en Tipos de actualizaciones, y Empezar para los detalles de implementación en Empezar.