Las actualizaciones en vivo son una de las características más poderosas de las aplicaciones Capgo, permitiendo actualizaciones en tiempo real sin la necesidad de subir la aplicación a las tiendas de aplicaciones. Vamos a sumergirnos en cómo __CAPGO_KEEP_1__ implementa esta funcionalidad.
Live updates are one of the most powerful features in Capacitor apps, allowing real-time updates without app store submissions. Let’s dive deep into how Capgo implements this functionality.
Conceptos básicos
Una aplicación de Capacitor consta de dos capas principales:
- Capa Web: Contiene archivos HTML, CSS y JavaScript cargados en la WebView
- Capa Nativa: Contiene código específico de la plataforma (code para Android, Swift para iOS)
El sistema de actualizaciones en vivo de Capgo funciona reemplazando la capa 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 los archivos actualmente cargados en WebView
- Ruta del Servidor Siguiente: Se refiere a los archivos que se cargarán en la próxima reinicio de la aplicación
Implementación de Android
En Android, Capgo gestiona rutas a través de:
// 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();
}
Implementación de iOS
En iOS, las rutas se gestionan a través de:
// 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)
}
Medidas de Seguridad
Capgo implementa medidas de 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á del cifrado tradicional code de firma para proporcionar seguridad de cero conocimiento verdadera.
Arquitectura de Cifrado de Extremo a Extremo
-
Cifrado de Extremo a Extremo (E2EE): Cada paquete de actualización se cifra utilizando cifrado AES-256-GCM antes de dejar el entorno de desarrollo. Este cifrado de grado militar asegura que las actualizaciones de la aplicación permanezcan completamente privadas y seguras durante todo el proceso de entrega.
-
Arquitectura de Cero Conocimiento: A diferencia de otras soluciones de actualizaciones OTA que solo firman actualizaciones, Capgo emplea una verdadera cifrado 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 un intermediario que pueda acceder a su contenido de actualización
-
Gestión de Claves Seguras:
- Las claves de cifrado se generan y se almacenan de manera segura en su 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
- El soporte de rotación de claves para una mayor seguridad
Aprende más sobre nuestro sistema de cifrado en nuestra guía detallada: Encriptación de Capa a Capa en Capgo Live Updates
Proceso de Actualización de Seguridad
-
Encriptación Pre-Subida:
- Las actualizaciones se encriptan en tu pipeline de CI/CD
- Se encripta cada archivo individualmente
- Se encripta también la metadata para una privacidad completa
-
Almacenamiento Seguro:
- Los bundles encriptados se almacenan en el CDN global de Capgo
- Ningún dato en texto plano nunca llega a nuestros servidores
- En caso de robo de servidor, los datos permanecen seguros
-
Entrega Segura:
- Las actualizaciones se entregan a través de canales encriptados
- Cada instancia de la aplicación valida la integridad de la encriptación
- Mecanismos de reintento automático para la desifrado fallida
-
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 aproximación de seguridad integral garantiza que las actualizaciones de tu aplicación permanezcan protegidas contra:
- Ataques de hombre en el medio
- Intrusiones en el lado del servidor
- Modificaciones no autorizadas
- Ataques de replay
- Integridad de contenido
Ciclo de vida de la actualización
El proceso de actualización de Capgo 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 realiza automáticamente la verificación de 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
Cuando se detecta una nueva versión, si autoUpdate está habilitado:
- Comienza la descarga automáticamente
- El progreso se sigue internamente
- Descargas fallidas se reintentan en cada apertura de la aplicación
- Las descargas exitosas se almacenan en el almacenamiento 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
directUpdatees verdadero - En la próxima apagado de fondo de la aplicación si
directUpdatees falso - Rolback automático si la instalación falla
El plugin también gestiona automáticamente el almacenamiento:
- Elimina actualizaciones fallidas si
autoDeleteFailedes verdadero - Limpia versiones antiguas si
autoDeletePreviouses 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: Instalar cuando la aplicación se envíe al fondo
- fecha: Instalar después de una fecha/hora específica
- versión nativa: Instale después de la próxima actualización nativa
- kill: 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:
- descargando: Descargando en progreso
- pendiente: Descarga completa, esperando a instalar
- éxito: Actualización instalada y activa
- error: Actualización fallida (desencadena el auto-rollback)
Cumplimiento de la Tienda
Apple App Store
Las actualizaciones en vivo están plenamente conformes con las políticas de la Apple App Store. Según lo establecido en el Acuerdo de Licencia del Programa de Desarrolladores de Apple:
“Los code interpretados pueden descargarse en una Aplicación, pero solo mientras 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 la publicidad previstos de la Aplicación tal como se presentó en la Tienda de Aplicaciones, (b) no cree una tienda o una tienda de aplicaciones 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 todos los límites de seguridad de la plataforma.
Google Play Store
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 code que se ejecuta en una máquina virtual o un intérprete donde uno proporciona acceso indirecto a las API de Android (como JavaScript en una vista de web o navegador).”
Dado que Capgo solo actualiza el contenido de la vista de web, se ajusta a estas directrices permitidas.
Prácticas recomendadas
- Despliegue en fases: Despliegue actualizaciones gradualmente
- 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).
- : Rastrear todas las versiones desplegadasApoyo de devolución
- : Recuperación rápida de problemasActualizaciones delta en vivo (enlace a la página de producto de actualizaciones en vivo, título de la sección o página).contexto: Página/área: Página de producto de actualizaciones en vivo. Rol: Título de sección o página. Clave de mensaje `live_update_delta_title` (Título de actualización en vivo delta).): Solo descargar archivos modificados
When to Use Live Updates
Perfecto para:
- Correcciones de errores
- Mejoras de interfaz de usuario
- Actualizaciones de contenido
- Activadores de características
No apto para:
- Cambios nativos de code
- Actualizaciones de versión mayor
- Actualizaciones de seguridad que requieren cambios nativos
Sigue leyendo de Cómo funcionan las actualizaciones en vivo en Capgo
Si estás utilizando How Live Updates Work in Capgo para planificar el trabajo de plugins nativos, conecte 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 Compilaciones Nativas para el flujo de trabajo del producto en Capgo Compilaciones Nativas.