Saltar al contenido principal
Tutoriales

Navegación entre canales para Capgo: Cómo cambiar el canal de actualización en tiempo de ejecución

Envía cambios a usuarios específicos de inmediato con Capgo's canal de actualización en tiempo de ejecución. Cambia los canales de actualización sin reinstalar tu aplicación Capacitor.

Martin Donadieu

Martin Donadieu

Marketing de Contenido

Navegación entre canales para Capgo: Cómo cambiar los canales de actualización en tiempo de ejecución

¿Alguna vez has deseado enviar un cambio directamente a un usuario para su revisión y retroalimentación inmediata - 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).

Lo que faltaba era 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 una versión de producción cambiara a una versión en curso de trabajo, recopilar retroalimentación y luego regresar a la producción.

Eso es lo que navegación entre canales permite. Una aplicación instalada en un dispositivo del usuario puede cambiar los canales de actualización en tiempo de ejecución, convirtiendo una aplicación de producción en un espacio flexible para la revisión y la iteración en lugar de un punto final fijo. Esto es especialmente útil para partes no técnicas que trabajan con aplicaciones de producción, permitiéndoles probar cambios y dar retroalimentación directamente en la aplicación que ya tienen instalada.

Entendiendo los canales de actualización

Los canales de actualización son cómo Capgo los objetivos actualizaciones a versiones específicas. Cada versión está asociada con un canal, y ese canal determina qué actualizaciones recibirá.

Por ejemplo, puede publicar actualizaciones en un preview canales sin afectar a los usuarios en production. En el pasado, cambiar de canales requería instalar una versión nativa diferente o cambiar manualmente las asignaciones de dispositivos a través de la consola.

Los canales en Capgo le permiten:

  • Dirigir grupos de usuarios específicos con características diferentes
  • Ejecutar pruebas A/B asignando usuarios a diferentes canales
  • Desplegar gradualmente nuevas características
  • Crear programas de pruebas beta
  • Depurar problemas de producción con usuarios individuales

Si no está familiarizado con los canales de actualización, la documentación de canales de Capgo los cubre con más detalle.

¿Qué es Channel Surfing?

El channel surfing permite a una aplicación instalada obtener actualizaciones de diferentes flujos de actualizaciones sin tener que reinstalarla. Una aplicación instalada puede cambiar el canal de actualizaciones 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.

En la práctica, esto significa que un propietario de producto o un QA pueden cambiar una production construcción a, por ejemplo, un preview canal, probar las últimas modificaciones. Cuando terminen de probar, cambian de nuevo a production otra vez. No hay necesidad de reinstalar o de una construcción de prueba separada.

Bajo la capa, el channel surfing funciona permitiendo a la aplicación informar al cliente de actualizaciones qué canal utilizar. Esa elección se puede cambiar en tiempo de ejecución y permanece en efecto hasta que se elimine o reemplace.

Cómo implementar Channel Surfing

Antes de que puedas probar el channel surfing, tu proyecto debe estar configurado con Capgo Live Updates. Para configurarlo, sigue el Capgo quickstart guide.

La única configuración requerida para el channel surfing es habilitar "Permitir que los dispositivos se asocie automáticamente" en cada canal que desees cambiar a en la consola de Capgo. No code cambios o modificaciones de configuración necesarias más allá de eso.

En su núcleo, la navegación entre canales está impulsada 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. Obtenga más información sobre la función setChannel API.

Encendido de canales 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:

  1. Validación de backend (solo lectura): Se envía una solicitud al backend de Capgo para validar que el canal está permitido
  2. Actualización de almacenamiento local: Si la validación es exitosa, el canal se guarda en el almacenamiento local del dispositivo
  3. Efecto inmediato: La próxima verificación de actualizaciones utiliza el nuevo canal de inmediato

Anteriormente, setChannel() almacenó la sobrescritura del canal en la base de datos del servidor (como Dashboard o API cambios). Los dispositivos tenían que esperar la replicación del servidor (hasta 2 minutos) antes de que se reconociera el nuevo canal. 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í:

  1. Cambiar el canal (setChannel)
  2. Verificar una actualización (getLatest)
  3. Obtener y aplicar la actualización (download, set o next)
  4. Recargar la aplicación si es necesario (reload)

Here’s a complete example:

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');

La forma en que estructures este flujo es a tu elección. Puede 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.

La Única Requisito: Habilitar Autoasignación

Esto es lo único que necesitas 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:

  1. Ve a la Sección de canales en tu consola de Capgo
  2. Haz clic en el nombre del canal que deseas gestionar
  3. Habilita “Permitir que los dispositivos se asocie automáticamente”
  4. Guardar los cambios

Habilitar la autoasignación en los ajustes del canal

Eso es todo. No se requieren cambios de configuración en tu aplicación. No defaultChannel se requiere configuración. Solo habilita 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 el channelPrivate evento se disparará.

Lista de Canales Disponibles

Puedes obtener la lista de canales disponibles para la autoasignación:

const { channels } = await CapacitorUpdater.listChannels();

console.log('Available channels:', channels.map(c => c.name));
// Use this to build a channel selector UI

Esto solo devuelve canales donde la autoasignación está habilitada.

Obtener el Canal Actual

Verifica qué canal está asignado actualmente al dispositivo:

const { channel } = await CapacitorUpdater.getChannel();

console.log('Current channel:', channel);

Revertir a Canal Predeterminado

Para eliminar la sobrescritura de canal y regresar al predeterminado:

await CapacitorUpdater.unsetChannel({});

Esto desvincula el dispositivo de cualquier canal asignado específicamente, causando que regrese a defaultChannel en tu configuración o el valor por defecto de la nube.

Cómo Probar la Navegación entre Canales

Para ver la navegación entre canales 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 la navegación entre canales es habilitar “Permitir que los dispositivos se asocien de forma autónoma” en cada canal que desees permitir cambiar a. No se necesitan cambios en la configuración de tu aplicación.

Crear una Compilación de Prueba

Construye tu aplicación de manera habitual:

bun run build && npx cap sync

Luego crea tus compilaciones nativas utilizando Xcode o Android Studio, o utiliza tu pipeline de 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

Desde allí, navega a tu interfaz de usuario de navegación por canales en la aplicación y activa el cambio de canal. La aplicación debería descargar la actualización del canal seleccionado y recargar en la nueva actualización.

Crear una Interfaz de Cambio de Canal

La navegación por canales suele ser algo que deseas exponer a un conjunto limitado de usuarios, no a todos los que utilizan tu aplicación. Por ejemplo, podrías tener un botón disponible solo para empleados autenticados que cambia la aplicación al canal de prueba.

Aquí tienes un ejemplo de componente React para un cambio 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 de OTA (Sobre la Red) con Problemas

Ninguno de estos es específico de la navegación por canales, pero tienden a volverse evidentes rápidamente una vez que comiences a cambiar de canales en tiempo de ejecución.

Incompatibilidades de Versión en Tiempo de Ejecución

Las actualizaciones en Capgo están vinculadas a versiones de aplicaciones nativas. Si la versión nativa de una actualización no coincide con la versión nativa de la aplicación instalada, la actualización no se descargará ni se aplicará. Al navegar por canales, esto suele aparecer como la aplicación cambiando de canales pero sin que se aplique ninguna actualización, aunque una exista en ese canal.

Este mensaje suele indicar que la actualización se publicó desde una versión nativa diferente de la aplicación. Asegúrese de que el paquete de su canal sea compatible con la versión nativa instalada en el dispositivo.

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 futuras descargas.

La forma más confiable de deshacer una actualización mala es publicar una actualización conocida como buena en el mismo canal. Esto crea una nueva actualización en la parte superior de la historia del canal, que los clientes tratarán como la versión más reciente y aplicarán en su lugar.

Capgo también proporciona un mecanismo de retroceso que puede instruir a los clientes a re-aplicar una actualización estable previa o regresar a la actualización incorporada en la compilación.

Consideraciones de Migración de Datos

Cambiar de canal cambia el paquete de JavaScript que la aplicación ejecuta. Si su aplicación depende de migraciones o formas de datos que no son compatibles entre canales, cambiar de un lado a otro puede causar problemas.

Por ejemplo, si una actualización de beta aplica una migración de base de datos, la versión de producción no entenderá el nuevo esquema. Los desarrolladores deben asegurarse de que sus actualizaciones sean seguras para cambiar entre ellas o restringir el cambio a un sentido cuando sea necesario.

Por qué el Surfado de Canales Mejora la Iteración Móvil

El surfado de canales es especialmente útil cuando necesita revisar cambios rápidamente en un entorno de producción.

Validación Rápida

Imagine un bug urgente 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 Stakeholders

Un propietario de producto o un especialista en pruebas puede cambiar su instalación de producción a otra 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. Un solo edificio 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 Beta: Los usuarios optan por el canal beta para acceder temprano
  • Revisión de Stakeholders: Propietarios de productos revisan cambios antes de la liberación
  • A/B Testing: 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 plugin Inmediato Dispositivo solo (local) Switch de canal iniciado por el usuario en la aplicación
Panel de control de dispositivo Hasta 2 min Base de datos de backend Cambios administrados para dispositivos específicos
API Asignación de canal Hasta 2 min Base de datos de backend Integraciones de backend automatizadas

Para obtener la mejor experiencia del usuario al crear interfaces de usuario de cambio de canal, siempre utilice el método del plugin. setChannel() __CAPGO_KEEP_0__

Prácticas recomendadas

  1. Restringir acceso: La navegación entre canales es generalmente para uso interno - no la expongas a todos los usuarios
  2. Gestionar Errores: Siempre maneja errores con amabilidad cuando cambias de canal
  3. Validar compatibilidad: Asegúrate de que las actualizaciones en diferentes canales sean compatibles con la versión nativa instalada
  4. Documentar canales: Mantén una documentación clara de qué es cada canal para
  5. Monitorear uso: Registra qué dispositivos están en qué canales para depuración

Recursos

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 el cambio de canal instantáneo introducido en las últimas versiones del complemento, la experiencia es ahora ininterrumpida - 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 de 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 Navegación entre canales para Capgo: Cómo cambiar entre canales de actualizaciones en tiempo de ejecución

Si estás utilizando Navegación entre canales para Capgo: Cómo cambiar entre canales de actualizaciones en tiempo de ejecución para planificar la ruta de los canales y el despliegue en etapas, conectarlo con Canales para el detalle de implementación en Canales, Canales para el detalle de implementación en Canales, Canales para el detalle de implementación en Canales, Solución de Pruebas Beta para el flujo de trabajo del producto en Solución de Pruebas Beta, y Solución de Alcance de Versión para el flujo de trabajo del producto en Solución de Alcance de Versión.

Actualizaciones en vivo para aplicaciones Capacitor

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

Empezar Ahora

Últimas noticias de nuestro Blog

Capgo te da las mejores pistas que necesitas para crear una aplicación móvil verdaderamente profesional.