Saltar al contenido principal

How Live Updates Work in Capgo

Deep dive into the technical implementation of live updates in Capgo, understanding how it works under the hood for both iOS and Android.

Créditos del artículo

Martin Donadieu

Escritor

Valeria

Revisor

Jordan

Editor

Cómo funcionan las actualizaciones en vivo en Capgo

Entendiendo las actualizaciones en vivo en Capgo

Las actualizaciones en vivo son una de las características más potentes en las aplicaciones de Capacitor, permitiendo actualizaciones en tiempo real sin necesidad de subir la aplicación a la tienda. Vamos a profundizar en cómo Capgo implementa esta funcionalidad.

Conceptos básicos

Una aplicación de Capacitor consta de dos capas principales:

  1. Nivel web: Contiene archivos HTML, CSS y JavaScript cargados en el WebView
  2. Nivel nativo: Contiene código de plataforma específico de code (Java/Kotlin para Android, Swift para iOS)

El sistema de actualizaciones en vivo de Capgo funciona reemplazando el nivel web en tiempo de ejecución, ya que estos archivos no se compilan en el binario de la aplicación.

Implementación técnica

Rutas del Servidor en Capacitor

Capgo gestiona dos rutas críticas:

  • Ruta del Servidor Actual: Se refiere a archivos cargados actualmente en WebView
  • Ruta del Servidor Siguientecontext: Página/área: Capgo Builder / producto de página de construcción nativa en la nube. Rol: Etiqueta de navegación corta o elemento de navegación. Clave de mensaje `native_build_builder_credit_next` (Crédito de constructor de compilación nativa).

: Se refiere a archivos que se cargarán en la próxima reiniciación de la aplicación

On Android, Capgo manages paths through:

// Store next server path
private void setNextCapacitorServerPath(String path) {
    SharedPreferences prefs = context.getSharedPreferences("CapWebViewSettings", Activity.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("serverBasePath", path);
    editor.apply();
}

// Update current path and reload
private void setCurrentCapacitorServerPath(String path) {
    bridge.setServerBasePath(path);
    bridge.reload();
}

Sobre Android, __CAPGO_KEEP_0__ gestiona rutas a través de:

Implementación de iOS

// Store next server path
private func setNextCapacitorServerPath(path: String) {
    KeyValueStore.standard["serverBasePath"] = path
}

// Update current path
private func setCurrentCapacitorServerPath(path: String) {
    bridge.viewController.setServerBasePath(path: path)
}

Sobre iOS, las rutas se gestionan a través de:

Medidas de Seguridad de Capgo implementan seguridad de grado militar a través de cifrado de extremo a extremo, asegurando que las actualizaciones de la aplicación permanezcan completamente seguras desde el desarrollo hasta la implementación. Nuestro sistema de cifrado va más allá de la firma tradicional code para proporcionar seguridad de conocimiento cero verdadero.

Arquitectura de cifrado de extremo a extremo

  1. Encriptación de extremo a extremo (E2EE): Cada paquete de actualización se cifra utilizando la encriptación AES-256-GCM antes de salir de tu entorno de desarrollo. Esta encriptación de grado militar garantiza que las actualizaciones de tu aplicación permanezcan completamente privadas y seguras durante todo el proceso de entrega.

  2. Arquitectura de cero conocimiento: A diferencia de otras soluciones de actualización OTA que solo firman actualizaciones, Capgo emplea verdadera encriptación de cero conocimiento. Esto significa:

    • El contenido de las actualizaciones se cifra antes de subir
    • Los servidores de Capgo solo almacenan datos cifrados
    • La descifrado solo ocurre en dispositivos de usuarios finales
    • No hay intermediario que pueda acceder al contenido de tu actualización
  3. Gestión de claves seguras:

    • Las claves de cifrado se generan y se almacenan de manera segura en tu entorno de CI/CD
    • Las claves privadas nunca tocan los servidores de Capgo
    • Cada versión de la aplicación puede utilizar claves de cifrado únicas
    • Soporte de rotación de claves para una mayor seguridad

Aprende más sobre nuestro sistema de cifrado en nuestra guía detallada: Cifrado de extremo a extremo en Capgo Actualizaciones en vivo

Proceso de seguridad de actualizaciones

  1. Cifrado previo a la carga:

    • Las actualizaciones se cifran en tu pipeline de CI/CD
    • Cada archivo se cifra individualmente
    • También se cifra la metadata para una privacidad completa
  2. Almacenamiento seguro:

    • Los conjuntos cifrados se almacenan en el CDN global de Capgo
    • Ningún dato en texto plano nunca llega a nuestros servidores
    • Even en caso de robo del servidor, los datos permanecen seguros
  3. Entrega Segura:

    • Las actualizaciones se entregan a través de canales cifrados
    • Cada instancia de la aplicación valida la integridad de la cifrado
    • Mecanismos de reintento automático para la desifrado fallida
  4. Seguridad en el lado del cliente:

    • Las actualizaciones se verifican antes de la instalación
    • La desifrado fallida desencadena un rollback automático
    • Almacenamiento de claves seguro en el almacenamiento protegido de la aplicación

Esta seguridad integral garantiza que las actualizaciones de su aplicación permanezcan protegidas contra:

  • ataques de hombre en el medio
  • robo del lado del servidor
  • Modificaciones no autorizadas
  • Ataques de replay
  • Integridad de contenido

Ciclo de actualización

Capgo’s proceso de actualización está diseñado para ser automático por defecto. Aquí’s cómo funciona el proceso automático:

1. Verificación de actualizaciones automáticas

El plugin verifica automáticamente las actualizaciones en las siguientes situaciones:

  • Cuando se inicia la aplicación

Este comportamiento se controla mediante la autoUpdate configuración:

// capacitor.config.json
{
  "plugins": {
    "CapacitorUpdater": {
      "autoUpdate": true // Enable automatic updates
    }
  }
}

También puedes verificar manualmente con getLatest()

2. Descarga automática

When se detecta una nueva versión, si autoUpdate está habilitado:

  1. Comienza el descarga automáticamente
  2. El progreso se sigue internamente
  3. Las descargas fallidas se reintentan automáticamente al abrir la aplicación
  4. Las descargas exitosas se almacenan en la memoria de la aplicación

Puedes monitorear este proceso a través de eventos:

CapacitorUpdater.addListener('download', (info: DownloadEvent) => {
  console.log('Auto-download progress:', info.percent);
});

CapacitorUpdater.addListener('downloadComplete', (info: DownloadCompleteEvent) => {
  console.log('Auto-download complete:', info.bundle);
});

3. Instalación automática

El tiempo de instalación depende de tu configuración:

// capacitor.config.json
{
  "plugins": {
    "CapacitorUpdater": {
      "autoUpdate": true,
      "directUpdate": false // install update on app backgrounding
      "resetWhenUpdate": true, // reset live updates on native update (true by default)
      "autoDeleteFailed": true, // Auto cleanup failed updates (true by default)
      "autoDeletePrevious": true // Auto cleanup old versions (true by default)
    }
  }
}

La instalación ocurre:

  • Inmediatamente si directUpdate es verdadero
  • En la próxima app de fondo si directUpdate es falso
  • Auto-rollback si falla la instalación

El plugin también gestiona automáticamente el almacenamiento:

  • Elimina actualizaciones fallidas si autoDeleteFailed es verdadero
  • Elimina versiones antiguas si autoDeletePrevious es verdadero

Retrasar actualizaciones

Puedes controlar cuándo se instalan las actualizaciones utilizando condiciones de retraso:

// Delay until app goes to background
await CapacitorUpdater.setDelay({
  kind: 'background'
});

// Delay until specific date
await CapacitorUpdater.setDelay({
  kind: 'date',
  value: '2024-03-20T10:00:00.000Z'
});

// Delay until next native version
await CapacitorUpdater.setDelay({
  kind: 'nativeVersion'
});

// Multiple conditions
await CapacitorUpdater.setMultiDelay({
  delayConditions: [
    {
      kind: 'background'
    },
    {
      kind: 'date',
      value: '2024-03-20T10:00:00.000Z'
    }
  ]
});

Condiciones de retraso disponibles:

  • fondo: Instale cuando la aplicación se ponga en segundo plano
  • fecha: Instale después de una fecha/hora específica
  • versión nativa: Instale después de la próxima actualización nativa
  • matar: Instale después de que la aplicación sea cerrada

Esto es útil para:

  • Programar actualizaciones durante horas de baja demanda
  • Coordinar actualizaciones con la actividad del usuario
  • Garantizar una experiencia de actualización suave
  • Prevenir interrupciones durante tareas críticas

Estados de Actualización

Durante el proceso automático, los paquetes pasan por estos estados:

  1. descargando: Descargando en curso
  2. pendiente: Descarga completa, esperando a la instalación
  3. éxito: Actualización instalada y activa
  4. error: Actualización fallida (desencadena el auto-rollback)

Cumplimiento de la Tienda

Tienda de Aplicaciones de Apple ✅

Actualizaciones en vivo están plenamente conformes con las políticas del Apple App Store. Como se establece en el Convenio de Licencia del Programa de Desarrolladores de Apple:

“Los code interpretados pueden descargarse en una Aplicación, pero solo durante tanto tiempo como tal code: (a) no cambie el propósito principal de la Aplicación proporcionando características o funcionalidad que sean inconsistentes con el propósito y publicidad previstos de la Aplicación tal como se presentó en la Tienda de Aplicaciones, (b) no cree una tienda o escaparate para otras code o aplicaciones, y (c) no evite la firma, el entorno de pruebas o otras características de seguridad del sistema operativo.”

Las actualizaciones de Capgo solo modifican la capa web mientras respeta todas las fronteras de seguridad de la plataforma.

Tienda de Google Play ✅

Las Actualizaciones en vivo cumplen con las políticas de Google Play. La política de abuso de dispositivos y redes especifica:

“Esta restricción no se aplica a los code que se ejecutan en una máquina virtual o un intérprete donde uno de ellos proporciona acceso indirecto a las API de Android (como JavaScript en una vista de navegador o navegador).”

Dado que Capgo solo actualiza el contenido de la vista de navegador, se ajusta a estas directrices permitidas.

Prácticas recomendadas

  1. Despliegue en fases: Despliegue actualizaciones gradualmente
  2. Control de versionescontexto: Página/área: Sitio web de marketing de Capgo. Rol: Etiqueta de UI corta o elemento de navegación. Clave de mensaje `version_control` (Control de versiones).
  3. Soporte de Rebobinado: Recuperación rápida de problemas
  4. Actualizaciones Delta: Solo descargar archivos modificados

Cuándo Usar Actualizaciones en Vivo

Ideal para:

  • Correcciones de errores
  • Mejoras de interfaz de usuario
  • Actualizaciones de contenido
  • Trazas de características

No apto para:

  • Cambios nativos code
  • Actualizaciones de versión mayor
  • Patch de seguridad que requiere cambios nativos

Continúa leyendo de Cómo funcionan las actualizaciones en vivo en Capgo

Si estás utilizando Cómo funcionan las actualizaciones en vivo en Capgo para planificar el trabajo de plugins nativos, conecta con Capgo Directorio de Plugins para el flujo de trabajo del producto en Capgo Directorio de Plugins, Capacitor Plugins por Capgo para el detalle de implementación en Capacitor Plugins por Capgo, Agregar o Actualizar Plugins para el detalle de implementación en Agregar o Actualizar Plugins, Alternativas de plugins de Ionic Enterprise para el flujo de trabajo del producto en Alternativas de plugins de Ionic Enterprise, y Capgo Construcción nativa para el flujo de trabajo del producto en Capgo Construcción nativa.

Actualizaciones en vivo para aplicaciones de Capacitor

Cuando un error en la capa web está en vivo, envía la corrección a través de Capgo en lugar de esperar días por la aprobación de la tienda de aplicaciones. Los usuarios reciben la actualización en segundo plano mientras que los cambios nativos siguen en el camino de revisión normal.

soporte humano de Martin

Comienza Ahora

Últimas noticias de nuestro Blog

Capgo te brinda las mejores herramientas para crear una aplicación móvil profesional de verdad.