Comportamiento de actualización
Copie un prompt de configuración con los pasos de instalación y la guía de markdown completa para este complemento.
Cuando liberes una actualización para 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
Sección titulada “Flujo de Actualización Predeterminado”Por defecto, aquí es cómo Capgo maneja las actualizaciones de aplicaciones:
-
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). -
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.
-
Una vez que se completa la descarga, Capgo espera a que el usuario ponga el app en segundo plano.
-
Cuando el usuario vuelva a poner el app en 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 app, sin que nunca sean interrumpidos por solicitudes de actualización o tengan que esperar a que se descarguen.
¿Por qué este enfoque?
Sección titulada “¿Por qué este enfoque?”Aplicar actualizaciones en un evento de fondo o de eliminación tiene algunos beneficios clave para la experiencia del usuario:
-
Los usuarios no son interrumpidos por solicitudes de actualización o obligados 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 el app siempre es fresca.
-
Podrías entregar actualizaciones con frecuencia sin preocuparte por interrumpir a los 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.
Para 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).
Personalizar cuándo se aplican las actualizaciones
Sección titulada “Personalizar cuándo se aplican las actualizaciones”En algunos casos, podrías querer tener más control sobre exactamente cuándo se aplica una actualización. Por ejemplo, podrías querer asegurarte 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 te 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', }, ],});Ejemplo que 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 muerte de la aplicación para aplicar la actualización.
Puede combinar y mezclar estas condiciones para controlar con precisión cuándo se instala una actualización.
condición actualmente hace que la actualización se aplique después del primer evento de muerte, no del próximo evento de segundo plano como las otras condiciones. Esta inconsistencia se corregirá en una futura versión.
Sección titulada “Aplicar Actualizaciones Inmediatamente”Para actualizaciones críticas o aplicaciones con un estado muy simple, puede desear 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 configuración de Capacitor.
autoUpdate está configurado en su capacitor.config.ts archivo, no en JavaScript code. Soporta estos valores:
falseo'off'otrue: Deshabilitar las comprobaciones de actualizaciones automáticas'atBackground'o'atInstall': Aplicar inmediatamente solo después de una instalación fresca o actualización de tienda de aplicaciones nativa; en caso contrario, use"atBackground"comportamiento'onLaunch': Aplicar inmediatamente solo cuando la aplicación se trae al primer plano desde un estado asesinado (inicio frío). Después de esa primera comprobación, regrese a"atBackground"comportamiento'always': Comprobar en cada transición al primer plano y aplicar inmediatamente siempre que esté disponible una actualización'onlyDownload': Comprobar y descargar automáticamente, emitirupdateAvailable, y nunca establecer el siguiente paquete o aplicar una actualización automáticamente
Prueba una compilación nativa sin actualizaciones en vivo
Título de la sección “Prueba una compilación nativa sin actualizaciones en vivo”Consulte Prueba compilaciones nativas sin actualizaciones en vivo para las medidas de seguridad de 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 when using instant apply with autoSplashscreen }, },};
export default config;Con autoUpdate: 'always', Capgo verifica en cada transición al primer plano y aplica una actualización inmediata tan pronto como se completa el 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 porque autoUpdate es una configuración nativa, los modos de aplicación instantánea requieren algún manejo adicional en tu JavaScript code.
Descargando Automáticamente Sin Aplicar
Sección titulada “Descargando Automáticamente Sin Aplicar”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 a CapacitorUpdater.set() o mostrar su propia ventana de actualización.
Gestión Automática de Pantalla de Bienvenida
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 gestiona automáticamente el ocultamiento de la pantalla de presentación 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 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 los
appReadyeventos o llamar aSplashScreen.hide()
Gestión Manual de Pantalla de Presentación
Sección titulada “Gestión Manual de Pantalla de Presentación”Si prefieres controlar manualmente 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 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.
Usando un modo de aplicación instantánea puede ser útil para entregar correcciones de errores críticos 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 no se maneja correctamente la pantalla de bienvenida (ya sea con
autoSplashscreeno manejo manualappReadydel evento). - 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
keepUrlPathAfterReloadno está configurado, lo que puede desorientarlo. - Necesitará manejar cuidadosamente la guardado y restauración del estado para asegurar una transición suave.
Si habilita la aplicación instantánea, recomendamos:
- Usar
autoSplashscreen: truepara la configuración más simple, o manejar manualmente elappReadyevento si necesita lógica personalizada. - Configuración
keepUrlPathAfterReloadatruecontexto - 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.
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_KEEP_0__ ofrece la flexibilidad para personalizar cuándo y cómo se aplican las actualizaciones.
Sigue adelante desde Comportamiento de ActualizaciónSección titulada ‘Sigue adelante desde Comportamiento de Actualización’ Si estás utilizando Comportamiento de Actualización para planificar la entrega de actualizaciones en vivo, conecta con Capgo Live Updates 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 Iniciar sesión Anterior