Saltar al contenido principal
Alternativas

Cómo enviar una actualización específica a un usuario o grupo

Permite que tus usuarios prueben versiones beta sin necesidad de TestFlight ni del proceso beta de Google: ¡solo añade un botón en tu app de Ionic y ya están dentro!

Cómo enviar una actualización específica a un usuario o a un grupo Capgo ilustración del blog

Prefacio

Cuando empieces a disfrutar del sistema de actualizaciones de Capgo, como me pasa a mí con mis apps, te surgirá la duda: «¿Y si quiero algo más?»

A mí también me pasó, pero como soy el creador de Capgo, ¡pude echar un vistazo!

Como todo es open-source, tú también tienes ese poder :)

¡El siguiente problema que encontré en el proceso de distribución de apps de Capacitor es hacer que otros compañeros prueben las actualizaciones!

Con TestFlight, el problema es simple: ¡añadir gente a tu equipo y explicarles cómo conseguirlo lleva muchísimo tiempo!

Y claro, cada vez que envías algo a Apple te enfrentas a un proceso de revisión aleatorio de un bot que puede tardar 5 minutos o 5 horas; nunca se sabe.

Muchas veces se me retrasó la presentación por esto...

Y con Google es aún peor, el gran misterio de mi vida: lanzar una versión de producción tarda menos de 2 horas, pero lanzar una beta cerrada tarda de 1 a 2 días.

Solución

Para solucionar esto, creé el sistema de Channels en Capgo.

npx @capgo/cli@latest bundle upload -c production llegará a todos los usuarios (si el canal de producción está configurado como predeterminado)

Si lo haces npx @capgo/cli@latest bundle upload -c development entonces la versión llegará a un canal distinto; esto se puede automatizar en la acción de GitHub.

Entonces tienes 2 formas de que los usuarios reciban las actualizaciones del canal

Método súper automático

Esto puede ser útil si no quieres crear tu propio backend para configurar canales; es rápido de implementar.

Con esa opción, lo único que tienes que hacer es permitir que uno de tus canales sea de configuración automática.

Permitir autoconfiguración en Capgo

Luego, añade esto en el code de tu app Ionic. Para la mejor experiencia, úsalo después de que el usuario haga clic en un botón como «Registrarse para beta».

import { CapacitorUpdater } from '@capgo/capacitor-updater'

const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })

Método manual

Esto puede ser útil para tu equipo interno; es rápido de implementar. Permite a los usuarios copiar su deviceID desde tu app y enviártelo 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 app, 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, conéctate como administrador de la app, selecciona tu aplicación y haz clic en la lista de dispositivos.

Luego escribe el deviceID en la barra de búsqueda, haz clic en el resultado encontrado y después en el enlace Channel. Elige el development, pide a tu compañero que vuelva a abrir la app, espera 30 segundos y ábrela y ciérrala.

Debería recibir tu versión.

Forma automática

Esto puede ser útil para tus beta testers, pero lleva más tiempo implementarlo.

Igual que en el método manual, tienes que obtener el deviceID

import { CapacitorUpdater } from '@capgo/capacitor-updater'

const deviceId = await CapacitorUpdater.getDeviceId()

Pero esta vez tienes que enviarlo automáticamente a tu backend; tú decides cómo hacerlo.

Solo te sugiero que lo guardes en una base de datos; eso te facilitará la vida más adelante.

Luego, desde tu backend, tienes que enviarlo también al backend de Capgo. Abajo tienes dos ejemplos de code:

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 device_id en el body a la URL desplegada, con POST para añadir y DELETE para borrar.

Una vez configurado esto, intenta añadir un botón en tu app para suscribirte al channel y comprueba en la web app si se ha establecido.

También puedes enviar null para eliminar el override

Si necesitas consultar programáticamente qué override tiene un dispositivo, puedes acceder a 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())

Continuar desde Cómo enviar una actualización específica a un usuario o grupo

Si estás usando Cómo enviar una actualización específica a un usuario o grupo 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.

Live updates para apps Capacitor

Cuando un bug de la capa web está en producción, publica el fix a través de Capgo en lugar de esperar días a la aprobación de la app store. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen el flujo de revisión habitual.

Lo último de nuestro blog

Capgo te da la información clave que necesitas para crear una app móvil realmente profesional.