Premessa
Quando inizi a godere del sistema di aggiornamento di Capgo, come faccio io per le mie app, inizierai a sentire il pensiero “Cosa se volessi di più?”
Anche io ho avuto questo pensiero, ma poiché sono il creatore di Capgo, ho potuto dare un'occhiata!
Poiché tutto è open-source, hai anche tu questo potere :)
La prossima fatica che ho avuto nel processo di distribuzione dell'app Capacitor è stato far testare gli aggiornamenti agli altri colleghi!
Con TestFlight, il problema è semplice, portare persone nel tuo team e farle capire come ottenerlo è un processo che richiede tempo!
E naturalmente, ogni volta che invii a Apple hai un processo di revisione casuale effettuato da un bot che può richiedere 5 minuti o 5 ore, non lo sai mai.
Mi sono ritrovato molte volte con la mia presentazione ritardata da questo…
Ecco per Google è ancora peggio, il grande mistero della mia vita, rilasciare una versione di produzione richiede meno di 2 ore, ma rilasciare una beta chiusa richiede 1–2 giorni.
Soluzione
Per risolvere questo, ho creato il sistema di canali in Capgo.
npx @capgo/cli@latest bundle upload -c production aggiornare a tutti gli utenti (se il canale di produzione è impostato su default)
Se fai npx @capgo/cli@latest bundle upload -c development allora la versione atterra su un canale diverso, questo può essere automatizzato in GitHub azione.
Poi hai 2 modi per far sì che gli utenti ricevano gli aggiornamenti dal canale
Modo automatico Super
Questo può essere utile quando non vuoi creare il tuo backend per impostare i canali, è veloce da implementare.
Con questo, l'unica cosa che devi fare è consentire a uno dei tuoi canali di essere impostato come self.

And poi aggiungi questo nel code della tua app Ionic, per un'esperienza ottimale, utilizza questo dopo che l'utente clicca su un pulsante come “iscrivi per la beta”
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
Modalità manuale
Questo può essere utile per il tuo team interno, è veloce da implementare. Consenti agli utenti di copiare il loro ID dispositivo dall'app e inviarlo manualmente a te, questo code ti aiuterà a ottenerlo:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Nascondi un pulsante in qualche parte dell'app, o mostra il pulsante solo agli utenti connessi con un admin ruolo, ad esempio.
Poi vai nell'app Web o nell'app nativa Capgo, accedi come amministratore dell'app, seleziona la tua app, clicca sulla lista dei dispositivi.
Poi inserisci nell'area di ricerca l'ID dispositivo, clicca su quello trovato e poi clicca sul collegamento Channel scegli il development, chiedi al tuo compagno di aprirne un'altra volta l'app, aspetta 30 sec e aprila/chiusa.
Lui dovrebbe ottenere la tua versione.
Modalità automatica
Questo può essere utile per i tuoi tester beta, è più lungo da implementare.
Lo stesso della modalità manuale, devi ottenere l'ID dispositivo
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
But questa volta devi inviarlo automaticamente al tuo backend, ti lascio decidere come farlo.
Ti suggerirò di memorizzarlo in una database, che facilita la tua vita in seguito.
Poi nel tuo backend devi inviarlo anche al backend di Capgo. Ecco due code esempi:
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 solo il tuo device_id nel corpo della richiesta al URL di deploy con metodo POST per aggiungere e DELETE per eliminare.
Dopo aver configurato, prova ad aggiungere un pulsante nella tua app per accedere al canale e controlla nella web app se è stato impostato.
Puoi anche inviare null per rimuovere l'override
Se hai bisogno di controllare programmaticamente quale override è impostato su un dispositivo, puoi ottenere 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())
Continua da Come inviare un aggiornamento specifico a un utente o un gruppo
Se stai utilizzando Come inviare un aggiornamento specifico a un utente o un gruppo per pianificare la routing del canale e la distribuzione in fase di testing, connettilo con Canali per i dettagli di implementazione in Canali, Canali per i dettagli di implementazione in Canali, Canali per i dettagli di implementazione in Canali, Soluzione di Testing Beta per il workflow del prodotto in Soluzione di Testing Beta, e Soluzione di Targeting della Versione per il workflow del prodotto in Soluzione di Targeting della Versione.