Cómo usar Canales para Feature Flags y Pruebas A/B
El sistema de canales de CapGo proporciona una forma flexible de segmentar usuarios y controlar el acceso a funcionalidades. Aunque CapGo no tiene gestión de planes o pruebas A/B integradas, puedes implementar estas características gestionando tú mismo las asignaciones de canales.
Entendiendo los Canales
Los canales en CapGo te permiten:
- Dirigirte a grupos específicos de usuarios con diferentes funcionalidades
- Ejecutar pruebas A/B asignando usuarios a diferentes canales
- Implementar nuevas funcionalidades gradualmente
- Crear programas de pruebas beta
Métodos de Asignación de Canales
1. Asignación desde Backend (Recomendado)
Este es el método más seguro. Implica:
- Obtener el ID del dispositivo desde el actualizador
- Enviarlo a tu backend
- Tu backend llama a la API de CapGo para asignar el dispositivo
Así es como implementarlo:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Get device IDconst getDeviceId = async () => { const { deviceId } = await CapacitorUpdater.getDeviceId() return deviceId}
// Send device ID to your backendconst assignToChannel = async (channel: string) => { const deviceId = await getDeviceId() // Your backend will call CapGo API to assign the device await yourBackend.assignDeviceToChannel(deviceId, channel)}
Implementación del Backend
Tu backend necesita:
- Obtener una clave API del panel de CapGo
- Llamar a la API de CapGo para asignar el dispositivo a un canal
Para obtener tu clave API:
- Inicia sesión en tu panel de CapGo
- Ve a Configuración > Claves API
- Haz clic en “Generar Nueva Clave”
- Selecciona el modo
all
para gestionar dispositivos y canales - Copia la clave generada y guárdala de forma segura en las variables de entorno de tu backend
- La clave será una cadena hexadecimal de 32 caracteres
- Es una clave secreta que nunca debe exponerse en código del lado del cliente
Aquí hay un ejemplo en Node.js:
import axios from 'axios'
const CAPGO_API_KEY = 'your_api_key'const CAPGO_API_URL = 'https://api.capgo.app'
async function assignDeviceToChannel(deviceId: string, channel: string) { try { const response = await axios.post( `${CAPGO_API_URL}/device`, { app_id: 'YOUR_APP_ID', device_id: deviceId, channel: channel }, { headers: { 'authorization': CAPGO_API_KEY, 'Content-Type': 'application/json' } } ) return response.data } catch (error) { console.error('Failed to assign device to channel:', error) throw error }}
El backend también debe:
- Validar los permisos del usuario
- Registrar todas las asignaciones de canales
- Manejar la limitación de velocidad
- Implementar lógica de reintento para asignaciones fallidas
2. Auto-asignación (Menos Seguro)
Este método permite que los dispositivos se asignen directamente a un canal. Es útil para pruebas pero menos seguro para producción:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Assign device to channelconst assignToChannel = async (channel: string) => { await CapacitorUpdater.setChannel(channel)}
// Get current channelconst getCurrentChannel = async () => { const { channel } = await CapacitorUpdater.getChannel() return channel}
Antes de que los usuarios puedan auto-asignarse a un canal, necesitas habilitar esta función en el panel de CapGo:
- Ve a la sección de Canales en tu panel de CapGo
- Haz clic en el nombre del canal que quieres gestionar
- En la configuración del canal, habilita “Permitir que los dispositivos se auto-asocien”
- Guarda los cambios
Si esta configuración es falsa, cualquier intento de llamar a setChannel
con este canal fallará.
Implementando Feature Flags
Usa canales para controlar el acceso a funcionalidades:
const isFeatureEnabled = async (feature: string) => { // Example: Check if user is in beta channel const channel = await getCurrentChannel() return channel === 'beta'}
Implementación de Pruebas A/B
Ejecuta pruebas A/B asignando usuarios a diferentes canales:
const assignToABTest = async (userId: string) => { // Use consistent hashing to assign users const hash = await hashUserId(userId) const variant = hash % 2 === 0 ? 'variant-a' : 'variant-b'
await assignToChannel(variant) return variant}
Mejores Prácticas
- Usa Asignación desde Backend: Para producción, siempre usa el método de asignación desde backend
- Asignación Consistente: Usa IDs de usuario u otros identificadores estables para una asignación consistente de canales
- Monitoreo: Rastrea el uso de funcionalidades y métricas de rendimiento para cada canal
- Implementaciones Graduales: Comienza con segmentos pequeños de usuarios y expande gradualmente
- Documentación Clara: Documenta tu estrategia y propósitos de canales
Conclusión
Al aprovechar el sistema de canales de CapGo, puedes crear experiencias de aplicación más personalizadas y ejecutar pruebas A/B. Para uso en producción, siempre prefiere el método de asignación desde backend para mejor seguridad y control.
Para más detalles sobre la gestión de canales, consulta nuestra documentación de canales.