Versión de destino
Copia un prompt de configuración con los pasos de instalación y la guía de markdown completa para este complemento.
Esta guía explica cómo entregar automáticamente la última versión compatible de la caja a los usuarios en función de su versión nativa de la aplicación. de manera similar a la aproximación de Ionic AppFlow. Esto garantiza un manejo simplificado de actualizaciones y lanzamientos más rápidos, mientras se evitan problemas de compatibilidad.
El sistema de versión de Capgo permite que puedas:
- Entregar actualizaciones compatibles automáticamente para usuarios según su versión nativa de la aplicación
- Prevenir cambios que rompen la aplicación evitar que actualizaciones incompatibles lleguen a versiones de la aplicación incompatibles
- Gestionar múltiples versiones de la aplicación hacerlo sin lógica compleja
- Realizar actualizaciones sin problemas a segmentos específicos de usuarios
¿Por qué la versión de destino es importante (sobre todo para usuarios de AppFlow)?
Título de la sección “¿Por qué la versión de destino es importante (sobre todo para usuarios de AppFlow)?”Si estás familiarizado con Ionic AppFlow, sabes cuán crítico es asegurarte de que los usuarios reciben solo actualizaciones compatibles. AppFlow automatizó la coincidencia de paquetes de actualizaciones en vivo con versiones nativas de la aplicación, evitando que se entregara JavaScript incompatibilidad a versiones nativas antiguas code.
Capgo ofrece las mismas garantías de seguridad, con características adicionales:
- Mayor control sobre la coincidencia de versiones
- Strategias múltiples (canales, semver, restricciones nativas)
- Mejor visibilidad en la distribución de versiones
- API y CLI controlan junto con la gestión de la consola
Esta aproximación es particularmente útil cuando:
- Tienes usuarios en diferentes versiones principales de tu aplicación (por ejemplo, v1.x, v2.x, v3.x)
- Necesitas mantener la compatibilidad hacia atrás mientras se implementan cambios rotos
- Quieres evitar que los paquetes más nuevos rompan las versiones nativas code más antiguas
- Estás migrando a los usuarios gradualmente de una versión a otra
- Estás migrando desde AppFlow y quiere mantener la misma seguridad de actualización
¿Cómo Funciona
Sección titulada “¿Cómo Funciona”Capgo utiliza un enfoque de múltiples capas para emparejar a los usuarios con actualizaciones compatibles:
- Restricciones de Versión Nativa: Evita que los paquetes se entreguen a versiones nativas incompatibles
- Ruteo Basado en Canal: Ruta diferentes versiones de la aplicación a diferentes canales de actualización
- Controles de Versión Semántica: Bloquea automáticamente actualizaciones a lo largo de los límites de mayor/minor/patch
- Oversights de Nivel de Dispositivo: Dirige actualizaciones específicas a dispositivos o grupos de usuarios
Flujo de correspondencia de versiones
Sección titulada “Flujo de correspondencia de versiones”graph TD A[User Opens App] --> B{Check Device Override} B -->|Override Set| C[Use Override Channel] B -->|No Override| D{Check local plugin channel} D -->|setChannel value| E[Use local setChannel channel] D -->|No local channel| F{Check defaultChannel in App} F -->|Has defaultChannel| G[Use App's defaultChannel] F -->|No defaultChannel| H[Use Cloud Default Channel] C --> I{Check Version Constraints} E --> I G --> I H --> I I -->|Compatible| J[Deliver Update] I -->|Incompatible| K[Skip Update]Estrategia 1: Ruta de versiones basada en canales
Sección titulada “Estrategia 1: Ruta de versiones basada en canales”Este es el enfoque recomendado para gestionar cambios importantes y actualizaciones de versiones principales. Es similar al modelo de entrega de AppFlow.
Escenario de ejemplo
Sección titulada “Escenario de ejemplo”- Aplicación v1.x (100,000 usuarios) →
productioncanal - App v2.x (50,000 usuarios con cambios disruptivos) →
v2canal - App v3.x (10,000 usuarios beta) →
v3canal
Implementación
Sección titulada “Implementación”Paso 1: Configurar canales para cada versión mayor
Sección titulada “Paso 1: Configurar canales para cada versión mayor”// capacitor.config.ts for version 1.x buildsimport { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'production', // or omit for default } }};
export default config;// capacitor.config.ts for version 2.x buildsconst config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'v2', // Routes v2 users automatically } }};// capacitor.config.ts for version 3.x buildsconst config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'v3', // Routes v3 users automatically } }};Paso 2: Crear canales
Sección titulada “Paso 2: Crear canales”# Create channels for each major versionnpx @capgo/cli channel create productionnpx @capgo/cli channel create v2npx @capgo/cli channel create v3
# Enable self-assignment so apps can switch channelsnpx @capgo/cli channel set production --self-assignnpx @capgo/cli channel set v2 --self-assignnpx @capgo/cli channel set v3 --self-assignPaso 3: Subir paquetes específicos de versión
Sección titulada “Paso 3: Subir paquetes específicos de versión”# For v1.x users (from v1-maintenance branch)git checkout v1-maintenancenpm run buildnpx @capgo/cli bundle upload --channel production
# For v2.x users (from v2-maintenance or main branch)git checkout mainnpm run buildnpx @capgo/cli bundle upload --channel v2
# For v3.x users (from beta/v3 branch)git checkout betanpm run buildnpx @capgo/cli bundle upload --channel v3Ventajas
Sección titulada “Ventajas”- Zero code changes - La ruta del canal sucede automáticamente
- - Separación clara - Cada versión tiene su propio pipeline de actualizaciones
- - Puedes enviar actualizaciones a grupos de versiones específicas - Los despliegues son seguros
- - Los cambios disruptivos nunca llegan a versiones incompatibles Sin cambios
Estrategia 2: Controles de versión semántica
Sección titulada “Estrategia 2: Controles de versión semántica”Utilice los controles de versión semántica integrados de Capgo para evitar actualizaciones a través de límites de versión. No Actualizar Automáticamente a Versión Mayor
Sección titulada “No Actualizar Automáticamente a Versión Mayor”
ventana de terminal# Create a channel that blocks major version updatesnpx @capgo/cli channel create stable --disable-auto-update majorLos usuarios con la versión de la aplicación
- recibirán actualizaciones hasta 1.2.3 will receive updates up to 1.9.9
- Los usuarios recibirán NO no recibirán la versión 2.0.0 automáticamente
- Evita que los cambios de ruptura lleguen a versiones nativas más antiguas code
- La comparación utiliza la línea base nativa enviada como
version_build
Opciones de control granulares
Sección titulada “Opciones de control granulares”# Block target bundles outside the native major.minor line (1.2.x won't get 1.3.0)npx @capgo/cli channel set stable --disable-auto-update minor
# Block target bundles outside the exact native MAJOR.MINOR.PATCH core (1.2.3 won't get 1.2.4)npx @capgo/cli channel set stable --disable-auto-update patch
# Allow all updatesnpx @capgo/cli channel set stable --disable-auto-update noneEstrategia 3: Restricciones de versión nativa
Sección titulada “Estrategia 3: Restricciones de versión nativa”Specifica una versión mínima de la aplicación nativa (min_update_version) en cada paquete para que Capgo solo lo entregue a dispositivos cuya binaria nativa es lo suficientemente nueva.
Esto utiliza la estrategia de metadatos del canal metadatos Estrategia (--disable-auto-update metadata) más --min-update-version o --auto-min-update-version __CAPGO_KEEP_0__ --native-version CLI flag.
Título: Habilitar la configuración de metadatos en el canal
ventana de terminal# one-time: require min_update_version metadata on uploads to this channelnpx @capgo/cli@latest channel set production --disable-auto-update metadataTítulo: Habilitar la configuración de metadatos en el canal
ventana de terminalCopiar a portapapeles
# This bundle requires native version 2.0.0 or highernpx @capgo/cli@latest bundle upload \ --channel production \ --min-update-version "2.0.0"O dejamos que Capgo establezca el piso desde la compatibilidad del paquete nativo:
npx @capgo/cli@latest bundle upload \ --channel production \ --auto-min-update-versionUso de Casos
Sección titulada “Casos de uso”-
Necesario nuevo plugin nativo
Ventana de terminal # Bundle needs Camera plugin added in v2.0.0npx @capgo/cli@latest bundle upload \--channel production \--min-update-version "2.0.0" -
Cambios nativos API que rompen la compatibilidad
Ventana de terminal # Bundle uses new Capacitor 6 APIsnpx @capgo/cli@latest bundle upload \--channel production \--min-update-version "3.0.0" -
Migración gradual
Ventana de terminal # one-time: enable metadata gating on betanpx @capgo/cli@latest channel set beta --disable-auto-update metadata# Test bundle only on latest native versionnpx @capgo/cli@latest bundle upload \--channel beta \--min-update-version "2.5.0"
Estrategia 4: Prevención de la degradación automática
Sección titulada “Estrategia 4: Prevención de la degradación automática”Evite que los usuarios reciben paquetes más antiguos que su versión nativa actual.
Activar en Configuración de Canal
Sección titulada “Activar en Configuración de Canal”En el panel de control Capgo:
- Vaya a Canal contexto: nombre de característica de canales de Capgo. Página/área: página de marketing de soluciones de Capgo. Rol: etiqueta de UI corta o elemento de navegación. Visto en: página soluciones/white-label.astro. Clave de mensaje `solutions_white_label_visual_cell2_value` (Valor de celda visual de soluciones White Label).
- → Seleccione su canal Habilitar
- “Desactivar la descarga automática bajo nativo”
Or via CLI:
npx @capgo/cli@latest channel set production --no-downgrade- Dispositivo del usuario: Versión nativa 1.2.5
- Paquete de canal: Versión 1.2.3
- Resultado: La actualización está bloqueada (sería una actualización a una versión inferior)
Esto es útil cuando:
- Los usuarios instalaron manualmente una versión más nueva desde la tienda de aplicaciones
- Debes asegurarte de que los usuarios siempre tengan las últimas actualizaciones de seguridad
- Quieres prevenir errores de regresión
Estrategia 5: Bloqueo de dispositivo
Estrategia 5: Targeteo a nivel de dispositivoSuperar la asignación de canal para dispositivos o grupos de usuarios específicos.
Forzar Versión Específica para Pruebas
Estrategia titulada “Forzar Versión Específica para Pruebas”import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Force beta testers to use v3 channelasync function assignBetaTesters() { const deviceId = await CapacitorUpdater.getDeviceId()
// Check if user is beta tester if (isBetaTester(userId)) { await CapacitorUpdater.setChannel({ channel: 'v3' }) }}Panel de control de dispositivo
Estrategia titulada “Panel de control de dispositivo”En el Capgo panel de control:
- Ir a Dispositivos → Encontrar dispositivo
- Hacer clic Establecer Canal o ¿Qué canal elegir?
- ¿Qué versión establecer?
- Establecer con una versión específica de canal o paquete
Utilice las sobrescripciones de dispositivo para probar actualizaciones en su propio dispositivo antes de implementarlas en todos los usuarios.
Flujo de trabajo completo de estilo AppFlowSección titulada “Flujo de trabajo completo de estilo AppFlow”
Aquí hay un ejemplo completo que combina todas las estrategias: 1. Configuración inicial (App v1.0.0)
Sección titulada “1. Configuración inicial (App v1.0.0)”# Create production channel, then enable metadata min-version gatingnpx @capgo/cli@latest channel add productionnpx @capgo/cli@latest channel set production \ --disable-auto-update metadata \ --no-downgradeconst config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'production', } }};2. Cambio de versión que rompe la compatibilidad (App v2.0.0)
Sección titulada “2. Cambio de versión que rompe la compatibilidad (App v2.0.0)”# Create v2 channel for new versionnpx @capgo/cli@latest channel add v2npx @capgo/cli@latest channel set v2 \ --disable-auto-update metadata \ --no-downgrade \ --self-assign
# Create git branch for v1 maintenancegit checkout -b v1-maintenancegit push origin v1-maintenance// capacitor.config.ts for v2.0.0const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'v2', // New users get v2 channel } }};3. Envíe actualizaciones a ambas versiones
Sección titulada “3. Envíe actualizaciones a ambas versiones”# Update v1.x users (bug fix)git checkout v1-maintenance# Make changesnpx @capgo/cli@latest bundle upload \ --channel production \ --min-update-version "1.0.0"
# Update v2.x users (new feature)git checkout main# Make changesnpx @capgo/cli@latest bundle upload \ --channel v2 \ --min-update-version "2.0.0"4. Monitorear la distribución de versiones
Sección titulada “4. Monitorear la distribución de versiones”Utilice el Capgo panel para seguir:
- ¿Cuántos usuarios están en v1 vs v2
- Tasas de adopción de paquetes por versión
- Errores o congelamientos por versión
5. Deprecar Versión Antigua
Sección titulada “5. Deprecar Versión Antigua”Una vez que el uso de v1 caiga por debajo del umbral:
# Stop uploading to production channel# Optional: Delete v1 maintenance branchgit branch -d v1-maintenance
# Move all remaining users to default# (They'll need to update via app store)Precedencia de canal
Título de la sección “Precedencia de canal”Cuando existen múltiples configuraciones de canal, Capgo utiliza este orden de precedencia:
- Sobrescritura de dispositivo (Panel de control o API) - Prioridad más alta y visible en la interfaz de Sobrescritura de dispositivo
- Canal de plugin local via
setChannel()- Almacenado solo en el dispositivo y no se muestra en la interfaz de Sobrescritura de dispositivo - defaulChannel en capacitor.config.ts
- Canal predeterminado (Configuración de Cloud) - Prioridad más baja
Prácticas recomendadas
Sección titulada “Prácticas recomendadas”1. Siempre establezca defaultChannel para versiones principales
Sección titulada “1. Establecer siempre el canal predeterminado para versiones principales”// ✅ Good: Each major version has explicit channel// v1.x → production// v2.x → v2// v3.x → v3
// ❌ Bad: Relying on dynamic channel switching// All versions → production, switch manually2. Utilizar la versión semántica
Sección titulada “2. Utilizar la versión semántica”# ✅ Good1.0.0 → 1.0.1 → 1.1.0 → 2.0.0
# ❌ Bad1.0 → 1.1 → 2 → 2.53. Mantener ramas separadas
Sección titulada “3. Mantener ramas separadas”# ✅ Good: Separate branches per major versionmain (v3.x)v2-maintenance (v2.x)v1-maintenance (v1.x)
# ❌ Bad: Single branch for all versions4. Probar antes de la implementación
Sección titulada “4. Probar antes de la implementación”# one-time: create beta and enable metadata gating# (production is set up in the complete workflow above)npx @capgo/cli@latest channel add betanpx @capgo/cli@latest channel set beta --disable-auto-update metadata
# Test on beta channel firstnpx @capgo/cli@latest bundle upload \ --channel beta \ --auto-min-update-version
# Monitor for issues, then promote to productionnpx @capgo/cli@latest bundle upload \ --channel production \ --auto-min-update-version5. Monitorear la distribución de versiones
Sección titulada “5. Monitorear la distribución de versiones”Revisa regularmente tu tablero:
- ¿Los usuarios están actualizando a versiones nativas más nuevas?
- ¿Las versiones antiguas siguen recibiendo un alto tráfico?
- ¿Deberías deprecate los canales antiguos?
Comparación con Ionic AppFlow
Sección titulada “Comparación con Ionic AppFlow”Para equipos que están migrando desde Ionic AppFlowen español, aquí está cómo Capgo compara la versión de destino:
| Característica | AppFlow de Ionic | Capgo |
|---|---|---|
| Versión basada en rutas | Basado en versión automática | Basado en versión automática mediante defaultChannel + múltiples estrategias |
| Versión semántica | Apoyo básico | Avanzado con --disable-auto-update (mayor/minor/parche) |
| Restricciones de versión nativa | Configuración manual en la consola de AppFlow | Integrado --min-update-version / --auto-min-update-version con canales de metadatos |
| Gestión de canales | Interfaz de usuario web + CLI | Interfaz de usuario web + CLI + API |
| Sobrescrituras de dispositivo | Control limitado a nivel de dispositivo | Control completo a través de la consola /API |
| Prevención de descenso automático | Sí | Sí a través de --no-downgrade |
| Mantenimiento de varias versiones | Gestión de rama/canal manual | Automático con precedencia de canal |
| Autoalojamiento | No | Sí (control completo) |
| Análisis de versiones | Básico | Métricas detalladas por versión |
Solución de problemas
Sección titulada “Solución de problemas”Usuarios que no reciben actualizaciones
Sección titulada “Usuarios que no reciben actualizaciones”Verifique lo siguiente:
-
Asignación de canal: Verifique que el dispositivo está en el canal correcto
const channel = await CapacitorUpdater.getChannel()console.log('Current channel:', channel) -
Restricciones de versión: Verificar si el paquete tiene requisitos de versión nativa
- Dashboard → Paquetes → Verificar la columna “Versión Nativa”
-
Configuración de Semver: Verificar la configuración de canal de ‘
disable-auto-updateconfiguraciónventana de terminal npx @capgo/cli channel list -
Sobrescritura de dispositivo: Verificar si el dispositivo tiene una sobrescritura manual
- Dashboard → Dispositivos → Buscar dispositivo → Verificar canal/versión
Se ha entregado el paquete a la versión incorrecta
Sección titulada “Se ha entregado el paquete a la versión incorrecta”- Revisar canal predeterminado: Asegúrese de que el canal correcto esté en
capacitor.config.ts - Comprobar carga de paquete: Verifique que el paquete se haya cargado en el canal previsto
- Inspeccionar versión de actualización mínima: Confirme
--min-update-version(o--auto-min-update-version) se estableció y el canal utiliza--disable-auto-update metadata
Cambios de ruptura que afectan versiones antiguas
Sección titulada “Cambios de ruptura que afectan versiones antiguas”- Solución inmediata: Sobrescriba dispositivos afectados con paquete seguro
- Panel de control → Dispositivos → Selección en bloque → Establecer Versión
- Solución a largo plazo: Crear canales con versiones y mantener ramas separadas
- Prevención: Siempre prueba las actualizaciones en dispositivos representativos antes de la implementación
Migración desde Ionic AppFlow
Sección titulada “Migración desde Ionic AppFlow”Si estás migrando desde Ionic AppFlow, el enfoque de versión funciona de manera muy similar en Capgo, con mayor flexibilidad:
Mapa de conceptos
Sección titulada “Mapa de conceptos”| Concepto de AppFlow | Capgo Equivalente | Nota |
|---|---|---|
| Canales de Implementación | Capgo Canal | Mismo concepto, más potente |
| Bloqueo de Versión Nativa | --min-update-version / --auto-min-update-version | Más control granular |
| Prioridad del Canal | Precedencia del Canal (sobreescribir → en la nube → por defecto) | Precedencia más transparente |
| Objetivo de Implementación | Control de canal + semver | Disponibles varias estrategias |
| Producción de canal | production canal (o cualquier nombre) | Nombres flexibles |
| Implementación basada en Git | CLI carga de paquete desde rama | Mismo flujo de trabajo |
| Compatibilidad automática de versión | defaultChannel + restricciones de versión | Mejorado con varias estrategias |
Diferencias clave para usuarios de AppFlow
Título de la sección “Diferencias clave para usuarios de AppFlow”- Más control: Capgo te ofrece varias estrategias (canales, semver, versión nativa) que se pueden combinar
- Mejor visibilidad: La consola muestra la distribución de versiones y los problemas de compatibilidad
- API de acceso: Control programático completo sobre la versión de destino
- Auto-hospedaje: Opción para ejecutar tu propio servidor de actualizaciones con la misma lógica de versión
Pasos de migración
Título de la sección “Pasos de migración”- Asigna tus canales de AppFlow a Capgo canales (usualmente 1:1)
- Establecer
defaultChannelencapacitor.config.tspara cada versión mayor - Configurar reglas de semver si desea bloqueo automático en las fronteras de versión
- Subir conjuntos de versiones específicas usando
--min-update-version(el canal debe utilizar la estrategia de metadatos) - Monitorear la distribución de versiones en el Capgo dashboard
Patrones Avanzados
Sección titulada “Patrones Avanzados”Implementación Gradual por Versión
Sección titulada “Implementación Gradual por Versión”// Gradually migrate v1 users to v2async function migrateUsers() { const deviceId = await CapacitorUpdater.getDeviceId() const rolloutPercentage = 10 // Start with 10%
// Hash device ID to get deterministic percentage const hash = hashCode(deviceId) % 100
if (hash < rolloutPercentage) { // User is in rollout group - migrate to v2 await CapacitorUpdater.setChannel({ channel: 'v2' }) }}Banderas de Característica por Versión
Sección titulada “Banderas de Característica por Versión”// Enable features based on native versionasync function checkFeatureAvailability() { const info = await CapacitorUpdater.getDeviceId() const nativeVersion = info.nativeVersion
if (compareVersions(nativeVersion, '2.0.0') >= 0) { // Enable features requiring v2.0.0+ enableNewCameraFeature() }}Pruebas A/B entre Versiones
Sección titulada “Pruebas A/B a lo largo de versiones”// Run A/B tests within same native versionasync function assignABTest() { const nativeVersion = await getNativeVersion()
if (nativeVersion.startsWith('2.')) { // Only A/B test on v2 users const variant = Math.random() < 0.5 ? 'v2-test-a' : 'v2-test-b' await CapacitorUpdater.setChannel({ channel: variant }) }}Resumen
Sección titulada “Resumen”Capgo ofrece varias estrategias para la entrega de actualizaciones específicas de versión:
- Ruteo basado en canales: Separación automática de versiones mediante
defaultChannel - Gestión de versiones semánticas: Evita actualizaciones a lo largo de fronteras de versión mayor/minor/patch
- Restricciones de versión nativa: Requiere versión nativa mínima para paquetes
- Prevención de descenso automático: Nunca entregue paquetes más antiguos a versiones nativas más nuevas
- Device Overrides: Control manual para pruebas y targeting
Al combinar estas estrategias, puede lograr la entrega automática de actualizaciones con AppFlow, con aún más flexibilidad y control. Elija el enfoque que mejor se adapte al flujo de versión y despliegue de su aplicación.
Para obtener más detalles sobre características específicas:
- Guía de Cambios Importantes - Estrategia detallada de versionado de canales
- Gestión de Canales - Referencia completa de configuración de canales
- Comportamiento de Actualización - Retrasos y condiciones de versiones nativas
Siga adelante desde la configuración de targeting de versiones
Sección titulada “Sigue adelante desde la versión de destino”Si estás utilizando Versión de destino conectarla con Canales para los detalles de implementación en Canales, para los detalles de implementación en Canales, para los detalles de implementación en Canales, para los detalles de implementación en Canales, Solución de pruebas beta para el flujo de trabajo del producto en Solución de pruebas beta, y y Solución de Enfoque de Versión para el flujo de trabajo del producto en Solución de Enfoque de Versión.