¿Alguna vez has deseado enviar un cambio directamente a un usuario para su revisión y retroalimentación inmediatas - sin pedirles que descarguen e instalen una nueva versión desde TestFlight o Google Play?
He tenido clientes que solicitaron mejoras que pude implementar rápidamente, pero obtener los resultados en sus manos para validar significaba enviar una actualización a todos los usuarios (riesgoso para un cambio experimental) o crear una versión única para el cliente (un trabajo para ambos).
Faltaba flexibilidad. Los desarrolladores querían poder servir diferentes actualizaciones a diferentes grupos de usuarios, como partes no técnicas, QA o la base de usuarios completa cuando fuera apropiado.
No había una forma de que un build de producción se cambiara a una versión en curso, recopilar retroalimentación, y luego regresar a producción.
Es lo que navegación entre canales enables. An app installed on a user’s device can switch update channels at runtime, turning a production app into a flexible space for review and iteration rather than a fixed endpoint. This is especially useful for non-technical stakeholders working with production apps, allowing them to test changes and give feedback directly in the app they already have installed.
Comprender los canales de actualización
Update channels are how Capgo targets updates to specific builds. Each build is associated with a channel, and that channel determines which updates it will receive.
Por ejemplo, puedes publicar actualizaciones en un preview sin afectar a los usuarios en productionEn el pasado, cambiar de canal requería instalar una compilación nativa diferente o cambiar manualmente las asignaciones de dispositivo a través de la consola.
Los canales en Capgo te permiten:
- Dirigirte a grupos de usuarios específicos con características diferentes
- Ejecutar pruebas A/B asignando a los usuarios a diferentes canales
- Implementar nuevas características de manera gradual
- Crear programas de pruebas beta
- Depurar problemas de producción con usuarios individuales
Si no estás familiarizado con los canales de actualización, la documentación de canales de Capgo los cubre en mayor detalle.
¿Qué es el cambio de canal?
El cambio de canal permite a una aplicación instalada obtener actualizaciones de diferentes flujos de actualización sin tener que reinstalarla. Una aplicación instalada puede cambiar los canales de actualización en tiempo de ejecución y continuará recibiendo actualizaciones del canal seleccionado recientemente hasta que la aplicación sea desinstalada o cambiada a otro canal.
In practice, this means a product owner or QA can switch a production construcción a, por ejemplo, un preview canal, probar las últimas modificaciones. Cuando terminen de probar, pueden cambiar de nuevo a production sin necesidad de reinstalar o de una construcción de prueba separada.
Bajo la cubierta, el cambio de canal funciona permitiendo a la aplicación informar al cliente de actualizaciones qué canal utilizar. Esa elección puede cambiar en tiempo de ejecución y permanece en efecto hasta que se elimine o reemplace.
¿Cómo implementar el cambio de canal?
Antes de que puedas probar el cambio de canal, tu proyecto debe estar configurado con Capgo Actualizaciones en vivo. Para configurarlo, sigue el guía rápida de Capgo.
The only setup required for channel surfing is enabling “Allow devices to self associate” on each channel you want to switch to in the Capgo dashboard. No code changes or config modifications needed beyond that.
En su núcleo, la navegación entre canales se impulsa por una sola llamada a API:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
Esto establece el canal que se utiliza cuando se consulta Capgo para obtener actualizaciones. Aprenda más sobre la función setChannel API.
Interfaz de cambio de canal instantáneo (v5.34.0+)
Desde la versión del plugin 5.34.0, 6.34.0, 7.34.0 o 8.0.0 (dependiendo de su versión principal), setChannel() funciona de manera diferente y mucho más rápida:
- Validación de backend (solo lectura): Se envía una solicitud al backend de Capgo para validar que el canal está permitido
- Actualización de almacenamiento local: Si la validación es exitosa, el canal se guarda en el almacenamiento local del dispositivo
- Effecto instantáneo: La próxima verificación de actualizaciones utiliza el nuevo canal inmediatamente
Anteriormente, setChannel() guardó el override del canal en la base de datos del servidor (como Dashboard o API cambios). Los dispositivos tenían que esperar a la replicación del servidor (hasta 2 minutos) antes de que el nuevo canal fuera reconocido. El nuevo comportamiento solo lee de la base de datos del servidor (para la validación) y almacena localmente, lo que hace que los cambios de canal sean instantáneos.
Flujo de cambio de canal completo
Para una mejor experiencia del usuario, normalmente deseas hacer más que solo cambiar el canal y esperar a que se reinicie la aplicación. Una aproximación común es verificar inmediatamente las actualizaciones, descargarlas si están disponibles y recargar la aplicación para que el usuario aterrice directamente en la actualización seleccionada del canal.
Un flujo típico se ve así:
- Cambiar el canal (
setChannel) - Verificar una actualización (
getLatest) - Obtener y aplicar la actualización (
download,setonext) - Reiniciar la aplicación si es necesario (
reload)
Un ejemplo completo se ve así:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
async function switchChannel(selectedChannel: string) {
try {
// 1. Set the updates channel (with optional auto-update trigger)
await CapacitorUpdater.setChannel({
channel: selectedChannel,
triggerAutoUpdate: true // Immediately check for updates
});
console.log(`Switched to channel: ${selectedChannel}`);
// If you want more control, handle the update manually:
// const latest = await CapacitorUpdater.getLatest();
// if (latest.url) {
// const bundle = await CapacitorUpdater.download({
// url: latest.url,
// version: latest.version
// });
// await CapacitorUpdater.set({ id: bundle.id });
// }
} catch (error) {
console.error('Failed to switch channel:', error);
}
}
// Switch to the beta channel
switchChannel('beta');
How estructurás este flujo es cosa tuya. Puedes dividir estos pasos en varias interacciones o ejecutarlos todos al mismo tiempo. Independientemente de cómo estructures el flujo, asegúrate de tener en cuenta los errores. Problemas de red o un canal inválido pueden impedir que se aplique una actualización.
El Único Requisito: Habilitar Autoasignación
Esta es la única cosa que debes hacer para habilitar el cambio de canal. Antes de que tu aplicación pueda cambiar a un canal utilizando setChannel(), debes habilitar la autoasignación para ese canal en la consola de Capgo:
- Vaya a la Channels sección en su panel de control de Capgo
- Haz clic en el nombre del canal que deseas administrar
- Enable “Allow devices to self associate”
- Guardar los cambios

¡Listo. No se requieren cambios de configuración en tu aplicación. defaultChannel No se requiere configuración. Solo habilite la autoasignación en los canales que desees que los usuarios puedan cambiar a.
Si esta configuración está deshabilitada, cualquier intento de llamar setChannel() con este canal fallará y se disparará el evento. channelPrivate Lista de Canales Disponibles
Lista de canales disponibles
Esta solo devuelve los canales donde la autoasignación está habilitada.
const { channels } = await CapacitorUpdater.listChannels();
console.log('Available channels:', channels.map(c => c.name));
// Use this to build a channel selector UI
Solo devuelve los canales donde la autoasignación está habilitada.
Obteniendo el canal actual
Verifique qué canal está asignado actualmente al dispositivo:
const { channel } = await CapacitorUpdater.getChannel();
console.log('Current channel:', channel);
Revertir a Canal Predeterminado
To eliminar la sobrescritura de canal y regresar a la configuración predeterminada:
await CapacitorUpdater.unsetChannel({});
Esto desconecta el dispositivo de cualquier canal asignado específicamente, causando que regrese a la defaultChannel en tu configuración o la predeterminada en la nube.
Cómo Probar el Cambio de Canal
Para ver el cambio de canal en acción, necesitarás una compilación de lanzamiento - el @capgo/capacitor-updater API está diseñado para compilaciones de lanzamiento. En compilaciones de depuración, la aplicación carga típicamente JavaScript desde un servidor de desarrollo en lugar de eso, lo que evita el flujo de actualización normal.
Requisitos previos
El único requisito para el cambio de canal es habilitar “Allow devices to self associate” en cada canal que desees permitir el cambio. No se necesitan cambios en la configuración de tu aplicación.
Creando una Compilación de Prueba
Compila tu aplicación como de costumbre:
bun run build && npx cap sync
Entonces, crea tus compilaciones nativas utilizando Xcode o Android Studio, o utiliza tu pipeline CI/CD. La aplicación comenzará en el canal que se establezca como predeterminado en la nube en tu panel de control Capgo.
Publicar Actualizaciones en Diferentes Canales
Una vez que la aplicación está instalada, publica actualizaciones en diferentes canales:
# Publish to preview channel
npx @capgo/cli@latest bundle upload --channel preview
# Publish to production channel
npx @capgo/cli@latest bundle upload --channel production
From there, navigate to your channel surfing UI in the app and trigger the channel switch. The app should fetch the update from the selected channel and reload into the new update.
Crear una interfaz de cambio de canal
Channel surfing is usually something you want to expose to a limited set of users, not to everyone using your app. For example, you might have a button available to authenticated employees only that switches the app to the preview channel.
Aquí hay un ejemplo de componente React para un cambiador de canal:
import { useState, useEffect } from 'react';
import { CapacitorUpdater } from '@capgo/capacitor-updater';
export function ChannelSwitcher() {
const [currentChannel, setCurrentChannel] = useState<string>('');
const [availableChannels, setAvailableChannels] = useState<string[]>([]);
const [isLoading, setIsLoading] = useState(false);
useEffect(() => {
loadChannelInfo();
}, []);
async function loadChannelInfo() {
const { channel } = await CapacitorUpdater.getChannel();
setCurrentChannel(channel || 'default');
const { channels } = await CapacitorUpdater.listChannels();
setAvailableChannels(channels.map(c => c.name));
}
async function handleChannelSwitch(channel: string) {
setIsLoading(true);
try {
await CapacitorUpdater.setChannel({
channel,
triggerAutoUpdate: true
});
setCurrentChannel(channel);
// App will update in background or on next restart
} catch (error) {
console.error('Failed to switch channel:', error);
} finally {
setIsLoading(false);
}
}
return (
<div>
<p>Current channel: {currentChannel}</p>
<div>
{availableChannels.map(channel => (
<button
key={channel}
onClick={() => handleChannelSwitch(channel)}
disabled={isLoading || channel === currentChannel}
>
Switch to {channel}
</button>
))}
</div>
</div>
);
}
Actualizaciones OTA con trampas
Ninguno de estos es específico del cambio de canal, pero tienden a hacerse evidentes rápidamente una vez comiences a cambiar de canal en tiempo de ejecución.
Versión de Ejecución Incompatible
Updates in Capgo are tied to native app versions. If the native version of an update doesn’t match the native version of the installed app, the update won’t be downloaded or applied. When channel surfing, this typically shows up as the app switching channels but no update being applied, even though one exists on that channel.
This usually means the update was published from a different native version of the app. Make sure your channel’s bundle is compatible with the native version installed on the device.
Eliminar o Deshacer Actualizaciones
Si una aplicación ya ha descargado una actualización para un canal, eliminar esa actualización desde la consola de Capgo no la elimina de los dispositivos que ya la tienen. La eliminación solo detiene future downloads.
__CAPGO_KEEP_0__ también proporciona un mecanismo de retroceso que puede instruir a los clientes a re-aplicar una actualización estable anterior o regresar a la actualización incorporada en la compilación.
Capgo also provides a rollback mechanism that can instruct clients to re-apply a previous stable update or fall back to the update embedded in the build.
Consideraciones de Migración de Datos
Switching channels changes the JavaScript bundle the app runs. If your app depends on migrations or data shapes that are not compatible across channels, switching back and forth may cause issues.
For example, if a beta update applies a database migration, the production version might not understand the new schema. Developers should ensure their updates remain safe to switch between or restrict switching to one direction when needed.
¿Por qué el cambio de canal mejora la iteración móvil
Navegación entre canales es especialmente útil cuando necesitas revisar cambios rápidamente en un entorno de producción.
Eliminación de Actualizaciones
Imagine un arreglo urgente de un bug que necesita validación antes de ser lanzado ampliamente. Con el cambio de canal, la modificación puede ser aislada a un pequeño conjunto de usuarios designados que pueden revisarla antes de que llegue a producción.
Revisión de partes interesadas
Un propietario de producto o un especialista en pruebas puede cambiar su instalación de producción a otro canal de actualización, verificar la corrección o la característica y luego cambiar de nuevo una vez que estén listos.
Pruebas simplificadas
Esto facilita la participación de partes interesadas no técnicas en la revisión y la toma de decisiones, mientras se mantiene el flujo de trabajo suave. Una sola instalación de producción se convierte en una herramienta flexible para la prueba, la retroalimentación y la validación.
Uso de casos
- Pruebas de QA: El equipo de QA puede cambiar entre ramas de características
- Programas de beta: Users opt into beta channel for early access
- Revisión de partes interesadasPropietarios de productos revisan cambios antes de la publicación
- A/B Pruebas: Asignar usuarios a diferentes canales para experimentos
- Depuración: Cambiar a un usuario específico a un canal de depuración para diagnosticar problemas
Comparación: Métodos de cambio de canal
| Método | Tiempo de efecto | Persistido en | Uso |
|---|---|---|---|
setChannel() desde el plugin |
desde plugin | Inmediato (instantáneo) en el dispositivo (local) | Cambiar de canal iniciado por el usuario en la aplicación |
| Opción de dispositivo de la consola | Hasta 2 min | Base de datos de servidor | Cambios administrativos para dispositivos específicos |
| API Asignación de canal | Hasta 2 min | Base de datos de servidor | Integraciones de servidor automatizadas |
Para una mejor experiencia del usuario al crear interfaces de cambio de canal, siempre utilice el plugin. setChannel() method.
channel switching
- Limitar Acceso: La navegación entre canales es usualmente para uso interno - no la expongas a todos los usuarios
- Manejar Errores: Maneja siempre los errores con gracia cuando cambias de canal
- ValidarCompatibilidad: Asegúrate de que las actualizaciones en diferentes canales sean compatibles con la versión nativa instalada
- Documentar Canales: Mantén una documentación clara de qué es cada canal para
- Monitorear Uso: Registra qué dispositivos están en qué canales para depurar
Recursos
- Capgo Live Updates Documentation
- Documentación de canales
- Referencia del plugin API
- Capgo CLI Comandos
Conclusiones
La navegación entre canales transforma la forma en que puedes iterar en tu aplicación Capacitor. En lugar de tratar los compilados de producción como puntos finales fijos, se convierten en herramientas flexibles para la prueba, la validación y la iteración rápida.
Con la función de cambio de canal instantáneo introducida en las últimas versiones de plugin, la experiencia es ahora suave - los usuarios pueden cambiar de canal y recibir actualizaciones del nuevo canal de inmediato sin ningún período de espera.
Ya sea que estés validando correcciones de errores con partes interesadas, ejecutando programas beta o depurando problemas con usuarios específicos, la navegación entre canales te da la flexibilidad para enviar la actualización correcta al usuario correcto en el momento correcto.
Sigue adelante desde Channel Surfing para Capgo: Cómo cambiar de canal de actualizaciones en tiempo de ejecución
Si estás utilizando Navegación entre canales para Capgo: Cómo cambiar canales de actualización en tiempo de ejecución conectarla para planificar la ruta de canales y el despliegue en etapas Channels para los detalles de implementación en los canales, Canales para los detalles de implementación en los canales, Canales para los detalles de implementación en los canales, Solución de Pruebas Beta para el flujo de trabajo del producto en la Solución de Pruebas Beta Solución de Alcance de Versión para el flujo de trabajo del producto en la Solución de Alcance de Versión.