Introducción
Cuando comiences a disfrutar del sistema de actualizaciones de Capgo, como yo con mis aplicaciones, empezarás a sentir el sentimiento “¿Qué si quiero más?”
También lo sentí, pero desde que soy el creador de Capgo, pude echar un vistazo!
Dado que todo es de código abierto, usted también tiene este poder :)
La siguiente molestia que tengo en el proceso de distribución de la aplicación Capacitor es hacer que otros compañeros de equipo prueben las actualizaciones!
Con TestFlight, el problema es simple, pero llevar a las personas a tu equipo y hacer que entiendan cómo obtenerlo es un proceso que consume tiempo!
Y por supuesto, cada vez que envías a Apple tienes un proceso de revisión aleatorio por un bot que puede tomar 5 minutos o 5 horas, nunca sabes.
He tenido muchas veces mi presentación retrasada por esto…
Y para Google, esto es incluso peor, el gran misterio de mi vida, lanzar una versión de producción toma menos de 2 horas, pero lanzar una versión beta cercana toma 1-2 días.
Solución
Para solucionar esto, creé el sistema de canales en Capgo.
npx @capgo/cli@latest bundle upload -c production actualizará a todos los usuarios (si el canal de producción está configurado como predeterminado)
Si haces npx @capgo/cli@latest bundle upload -c development entonces la versión llega a un canal diferente, esto se puede automatizar en GitHub acción.
Luego tienes 2 formas de permitir que los usuarios obtengan las actualizaciones desde el canal
Vía automática super
Puede ser útil cuando no deseas crear tu propio backend para el canal de configuración, esto es rápido de implementar.
Con eso, la única cosa que necesitas hacer es permitir que uno de tus canales sea autoconfigurado.

Y luego agrega esto en el code de tu aplicación Ionic, para una mejor experiencia, utiliza esto después de que el usuario haga clic en un botón como “regístrate para la beta”
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
Vía manual
Puede ser útil para tu equipo interno, esto es rápido de implementar. Permite a los usuarios copiar su dispositivoID desde tu aplicación y enviarlo a ti manualmente, este code te ayudará a obtenerlo:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Oculta un botón en algún lugar de tu aplicación, o muestra el botón solo a los usuarios conectados con un admin rol, por ejemplo.
Luego ve a la aplicación web o nativa Capgo, conecta como administrador de la aplicación, selecciona tu aplicación, haz clic en la lista de dispositivos.
Luego introduce en la barra de búsqueda el dispositivoID haz clic en el encontrado y luego haz clic en el enlace de canal elige el development, pide a tu compañero de equipo que abra la aplicación nuevamente, espera 30 segundos y cierra.
Debería obtener su versión.
Forma automática
Esta puede ser útil para tus probadores beta, esto es más largo de implementar.
Igual que la forma manual, tienes que obtener el dispositivoID
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Pero esta vez tienes que enviarlo automáticamente a tu backend, te dejo decidir cómo lo haces.
Te sugiero que lo almacenes en una base de datos, eso facilitará tu vida más adelante.
Luego en tu backend tienes que enviarlo a Capgo backend también. A continuación, dos code ejemplos:
NodeJS
import axios from 'axios'
await axios.post('https://api.capgo.app/device', {
app_id: 'YOUR_APP_ID',
device_id: 'DEVICE_ID',
channel: 'CHANNEL_NAME', // The name of the channel, or undefined if version_id provided
version_id: 'VERSION_NAME' // this is optional, if provide it will override the channel, that useful when you want to debug only one user.
}, {
headers: {
authorization: 'YOUR_API_KEY' // choose a key with 'write' or 'all' rights
}
})
Cloudflare
addEventListener('fetch', (event) => {
event.respondWith(
handleRequest(event.request).catch(
err => new Response(err.stack, { status: 500 })
)
)
})
async function handleRequest(request) {
const { pathname, method } = new URL(request.url)
const body = await request.json()
const newBody = JSON.stringify({
app_id: 'YOUR_APP_ID',
device_id: body.device_id,
channel: 'alpha'
})
const newUrl = new URL('https://api.capgo.app/device')
const options = {
headers: {
authorization: 'YOUR_API_KEY',
},
method: 'POST',
body: newBody
}
if (request.method === 'DELETE') {
// DELETE the channel link
options.method = 'DELETE'
return fetch(newUrl.toString(), options)
}
return fetch(newUrl.toString(), options)
}
Y solo envía tu dispositivo_id en el cuerpo de él a la URL desplegada con POST para agregar y DELETE para eliminar.
Después de esto configurado, intenta agregar un botón en tu aplicación para optar a la canal, y verifica en la aplicación web si eso ha sido configurado.
También puedes enviar null para eliminar la sobrescritura
Si necesita verificar de forma programática qué sobrescritura está configurada en un dispositivo, puede obtenerla en la misma URL
import axios from 'axios'
const res = await axios.get('https://api.capgo.app/device?app_id=YOUR_APP_ID&device_id=DEVICE_ID', {
headers: {
authorization: 'YOUR_API_KEY' // choose a key with 'write' or 'all' rights
}
})
console.log('data', res.json())