Salta al contenuto principale
Alternative

Come inviare un aggiornamento specifico a un utente o a un gruppo

Permetti ai tuoi utenti di provare la versione beta senza TestFlight o il processo beta di Google: basta aggiungere un pulsante nella tua app Ionic e sono dentro!

Come inviare un aggiornamento specifico a un singolo utente o a un gruppo Capgo blog illustration

Prefazione

Quando inizi a sfruttare il sistema di update di Capgo, come faccio io con le mie app, ti verrà naturale chiederti: "E se volessi avere più controllo?"

È successo anche a me, ma essendo il creatore di Capgo, ho potuto approfondire la questione!

Essendo tutto open-source, puoi farlo anche tu :)

Il prossimo problema che ho incontrato nel processo di distribuzione delle app Capacitor è far testare gli update ai colleghi!

Con TestFlight il problema è semplice: aggiungere persone al team e fargli capire come ottenerla richiede un sacco di tempo!

E ovviamente, ogni volta che invii ad Apple, devi affrontare la revisione casuale di un bot che può impiegare dai 5 minuti alle 5 ore, non si sa mai.

Molte volte la mia presentazione è stata ritardata proprio da questo...

E con Google è anche peggio, il grande mistero della mia vita: rilasciare una versione in produzione richiede meno di 2 ore, ma rilasciare una beta chiusa richiede 1-2 giorni.

Soluzione

Per risolvere il problema, ho creato il sistema di Channel in Capgo.

npx @capgo/cli@latest bundle upload -c production aggiornerà tutti gli utenti (se il canale production è impostato come default)

Se lo fai npx @capgo/cli@latest bundle upload -c development allora la versione arriva su un canale diverso, e puoi automatizzarlo in azione GitHub.

In questo modo hai 2 modi per permettere agli utenti di ricevere gli update dal canale

Metodo super automatico

Può essere utile se non vuoi creare un tuo backend per impostare i canali: è rapido da implementare.

Con questo, l'unica cosa da fare è impostare uno dei tuoi canali su self.

Abilita set self in Capgo

Poi aggiungi questo nel code della tua app Ionic; per un'esperienza ottimale, usalo dopo che l'utente clicca su un pulsante come “registrati alla beta”

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

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

Metodo manuale

Utile per il tuo team interno, è rapido da implementare. Permetti agli utenti di copiare il deviceID dalla tua app e inviartelo manualmente; questo code ti aiuterà a ottenerlo:

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

const deviceId = await CapacitorUpdater.getDeviceId()

Nascondi un pulsante da qualche parte nella tua app, oppure mostralo solo agli utenti connessi con un admin ruolo, per esempio.

Poi vai su Capgo della web app o della native app, accedi come admin dell'app, seleziona la tua app e clicca sulla lista dei device.

Poi inserisci il deviceID nella barra di ricerca, clicca su quello trovato, poi clicca sul link Channel e scegli il development, chiedi al tuo collega di riaprire l'app, attendi 30 sec e apri e chiudi.

Dovrebbe ricevere la tua versione.

Metodo automatico

Può essere utile per i tuoi beta tester, ma richiede più tempo da implementare.

Come nel metodo manuale, devi recuperare il deviceID

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

const deviceId = await CapacitorUpdater.getDeviceId()

Ma questa volta devi inviarlo automaticamente al tuo backend; decidi tu come farlo.

Ti suggerisco solo di salvarlo in un database, così ti semplificherai la vita in seguito.

Poi, dal tuo backend, dovrai inviarlo anche al backend di Capgo. Qui sotto due esempi 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)
}

E invia semplicemente il tuo device_id nel body all'URL deployato, con POST per aggiungere e con il metodo DELETE per eliminare.

Una volta configurato, prova ad aggiungere un pulsante nella tua app per l'opt-in al canale e controlla nella web app se è stato impostato.

Puoi anche inviare null per rimuovere l'override

Se devi verificare via codice quale override è impostato su un dispositivo, puoi consultare lo stesso 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())

Torna a Come inviare un update specifico a un utente o a un gruppo

Se stai usando Come inviare un aggiornamento specifico a un utente o a un gruppo per pianificare il routing dei canali e il rollout graduale, connettilo a Canali per i dettagli di implementazione nei Channels, Canali per i dettagli di implementazione nei Channels, Canali per i dettagli di implementazione nei Channels, Soluzione Beta Testing per il workflow di prodotto nella Soluzione Beta Testing, e Soluzione Version Targeting per il workflow di prodotto nella Soluzione Version Targeting.

Live updates per le app Capacitor

Quando un bug nel web-layer è live, rilascia la fix tramite Capgo invece di aspettare giorni l'approvazione degli store. Gli utenti ricevono l'update in background, mentre le modifiche native restano nel normale processo di review.

Ultimi articoli dal blog

Capgo ti offre gli insight migliori che ti servono per creare un'app mobile davvero professionale.