Cómo usar Channels para feature flags y A/B testing
El sistema de canales de Capgo ofrece una forma flexible de segmentar usuarios y controlar el acceso a funciones. Aunque Capgo no tiene gestión de planes ni pruebas A/B integradas, puedes implementar estas funciones gestionando tú mismo las asignaciones de canales.
Entender los Channels
Los canales en Capgo te permiten:
- Segmenta grupos de usuarios con distintas funciones
- Realiza tests A/B asignando usuarios a distintos canales
- Lanza nuevas funciones de forma gradual
- Crea programas de beta testing
Métodos de asignación de canales
1. Asignación desde el backend (Recomendado)
Este es el método más seguro. Consiste en:
- Obtener el device ID desde el updater
- Enviarlo a tu backend
- Tu backend llama a la Capgo API para asignar el dispositivo
Así es como puedes implementarlo:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Get device ID
const getDeviceId = async () => {
const { deviceId } = await CapacitorUpdater.getDeviceId()
return deviceId
}
// Send device ID to your backend
const 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 en el backend
Tu backend necesita:
- Obtener una clave API desde el dashboard de Capgo
- Llamar a la API Capgo para asignar el dispositivo a un canal
Para obtener tu clave API:
- Inicia sesión en tu dashboard de Capgo
- Ve a Settings > API Keys
- Haz clic en “Generate New Key”
- Selecciona
allmodo 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 el code del lado del cliente
Aquí tienes 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 debería:
- Validar los permisos del usuario
- Registrar todas las asignaciones a canales
- Gestionar el rate limiting
- Implementar lógica de reintento para asignaciones fallidas
2. Autoasignación (Menos seguro)
Este método permite que los dispositivos se asignen directamente a un canal. Es útil para testing, pero menos seguro para producción:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Assign device to channel
const assignToChannel = async (channel: string) => {
await CapacitorUpdater.setChannel(channel)
}
// Get current channel
const getCurrentChannel = async () => {
const { channel } = await CapacitorUpdater.getChannel()
return channel
}
Antes de que los usuarios puedan autoasignarse a un canal, debes habilitar esta función en el dashboard de Capgo:
- Ve a la sección Canales en tu dashboard de Capgo
- Haz clic en el nombre del canal que quieras gestionar
- En la configuración del canal, activa “Permitir que los dispositivos se autoasocien”
- Guardar cambios
Si esta configuración es false, cualquier intento de llamar setChannel con este channel fallará.
Implementación de Feature Flags
Usa channels para controlar el acceso a funciones:
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 channels:
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
}
Buenas prácticas
- Usar asignación por backend: Para producción, usa siempre el método de asignación por backend
- Asignación consistente: Usa IDs de usuario u otros identificadores estables para una asignación consistente de canales
- Monitoreo: Registra el uso de funciones y métricas de rendimiento de cada canal
- Rollouts graduales: Comienza con segmentos de usuarios pequeños y expándelos gradualmente
- Documentación clara: Documenta tu estrategia de canales y sus propósitos
Conclusión
Aprovechando el sistema de canales de Capgo, puedes crear experiencias de app más personalizadas y ejecutar pruebas A/B. Para uso en producción, prefiere siempre el método de asignación por backend para mayor seguridad y control.
Para más detalles sobre la gestión de canales, consulta nuestra documentación de canales.
Continúa desde Cómo usar canales para feature flags y pruebas A/B
Si estás usando Cómo usar Channels para feature flags y A/B testing para planificar el enrutamiento de canales y el despliegue gradual, conéctalo con Canales para los detalles de implementación en Channels, Canales para los detalles de implementación en Channels, Canales para los detalles de implementación en Channels, Solución de beta testing para el workflow del producto en la solución de beta testing, y Solución de segmentación por versión para el workflow del producto en la solución de segmentación por versión.