Premessa
Quando inizi a godere del sistema di aggiornamento di Capgo, come faccio io per le mie app, inizierai a sentire il desiderio “Cosa se volessi di più?”
Anche io ho avuto questo sentimento, ma poiché sono il creatore di Capgo, ho potuto dare un'occhiata!
Poiché tutto è open-source, anche tu hai 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 le persone nel tuo team e farle capire come ottenerlo è un processo lungo!
E naturalmente, ogni volta che invii a Apple hai un processo di revisione casuale da parte di un bot che può durare 5 minuti o 5 ore, non lo sai mai.
Ho ricevuto spesso la mia presentazione ritardata da questo…
E 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 problema, ho creato il sistema di canale 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 si riversa in 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 self per impostare.

E poi aggiungi questo nel code della tua app Ionic, per un'esperienza migliore, utilizza questo dopo che l'utente clicca su un pulsante come 'iscriversi 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 deviceID dall'app e di 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, connettiti come amministratore dell'app, seleziona la tua app, clicca sulla lista dei dispositivi.
Poi inserisci nel campo di ricerca il deviceID, clicca su quello trovato e poi clicca sul link Channel scegli la development, chiedi al tuo compagno di aprire l'app di nuovo, aspetta 30 sec e riapri.
Deve ricevere 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 il deviceID
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Ma questa volta devi inviarlo automaticamente al tuo backend, lascio a te la scelta su come farlo.
I ti consiglierò di archiviarlo in una database, che faciliterà la tua vita in seguito.
Poi, nel tuo backend, devi inviarlo anche a Capgo backend. 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 di esso alla URL di deploy con POST per aggiungere e DELETE per cancellare.
Dopo aver configurato, prova ad aggiungere un pulsante nella tua app per accedere al canale e controlla nella app web se è stato impostato.
Potresti anche inviare null per rimuovere l'override
Se hai bisogno di controllare programmaticamente quale override è impostato su un dispositivo, puoi ottenere sulla stessa 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 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 Test Beta per il workflow del prodotto in Soluzione di Test Beta, e Soluzione di Targeting della Versione per il workflow del prodotto in Soluzione di Targeting della Versione.