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 o el proceso beta de Google; ¡solo añade un botón en tu app de Ionic y listo!

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

Prefacio

Cuando empiezas a disfrutar del sistema de updates de Capgo, como yo con mis apps, te surge 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 Capacitor es cómo hacer que otros compañeros prueben las actualizaciones!

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

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

Muchas veces mi presentación se retrasó 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 se actualizará para todos los usuarios (si el canal de producción es el 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 es útil si no quieres crear tu propio backend para gestionar canales; es muy rápido de implementar.

Con este método, lo único que tienes que hacer es permitir que uno de tus canales sea 'self-set'.

Permitir set self en Capgo

Luego, añade esto en el code de tu app Ionic. Para una mejor experiencia, úsalo tras un clic en un botón como “registrarse en la beta”.

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

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

Método manual

Útil para tu equipo interno y rápido de implementar. Permite que los usuarios copien su deviceID desde la app y te lo envíen manualmente; este code te ayudará a obtenerlo:

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

const deviceId = await CapacitorUpdater.getDeviceId()

Oculta un botón en tu app, o muéstralo solo a usuarios conectados con un admin rol específico, por ejemplo.

Luego, ve al Capgo de la web o la app nativa, conéctate como admin, selecciona tu app y ve a la lista de dispositivos.

Busca el deviceID en la barra de búsqueda, selecciona el resultado y haz clic en el enlace del Channel para elegir el development, pide a tu compañero que abra la app de nuevo, espera 30 seg y reinicia la app.

Debería recibir tu versión.

Forma automática

Esto puede ser útil para tus beta testers, aunque requiere más tiempo de implementación.

Igual que el método manual, debes obtener el deviceID

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

const deviceId = await CapacitorUpdater.getDeviceId()

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

Te sugiero guardarlo en una base de datos; eso te facilitará la vida más adelante.

Luego, en tu backend, debes enviarlo también al backend de Capgo. Aquí 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 cuerpo de la petición a la URL desplegada mediante POST para añadir, o el método DELETE para eliminar.

Tras configurar esto, añade un botón en tu app para unirse al canal y verifica en la web app si se ha registrado.

También puedes enviar null para eliminar el override

Si necesitas consultar programáticamente qué override tiene un dispositivo, puedes usar 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 el detalle de implementación en Channels, Canales para el detalle de implementación en Channels, Canales para el detalle de implementación en Channels, Solución de beta testing para el flujo de trabajo del producto en Beta Testing Solution, y Solución de Version Targeting para el flujo de trabajo del producto en Version Targeting Solution.

Live Updates para apps de Capacitor

Si hay un bug en la capa web, publica el fix con 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 proceso de revisión normal.

Lo último de nuestro blog

Capgo te da los mejores insights para crear una app móvil realmente profesional.