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 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 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
allpara 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 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 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.