Préface
Quand vous commencez à apprécier le système de Live Update de Capgo, comme moi pour mes apps, vous aurez envie de demander : « Et si je voulais aller plus loin ? »
J'ai eu ce sentiment aussi, mais comme je suis le créateur de Capgo, j'ai pu aller voir de plus près !
Comme tout est en open source, vous avez aussi ce pouvoir :)
Le prochain défi dans le processus de distribution de l'application Capacitor est de permettre à mes coéquipiers de tester les mises à jour !
Avec TestFlight, le souci est simple : intégrer des personnes à votre équipe et leur expliquer comment récupérer la version prend un temps fou !
Et bien sûr, chaque fois que vous envoyez quelque chose à Apple, vous subissez un processus de revue aléatoire par un bot qui peut prendre 5 min ou 5 heures, on ne sait jamais.
J'ai vu ma présentation retardée de nombreuses fois à cause de ça...
Et pour Google, c'est encore pire, le grand mystère de ma vie : publier une version de production prend moins de 2 heures, mais publier une version bêta fermée prend 1 à 2 jours.
Solution
Pour régler cela, j'ai créé le système de canaux dans Capgo.
npx @capgo/cli@latest bundle upload -c production sera déployée à tous les utilisateurs (si le canal de production est défini par défaut)
Si vous le faites npx @capgo/cli@latest bundle upload -c development alors la version arrive sur un canal différent, cela peut être automatisé via une action GitHub.
Vous avez ensuite 2 façons de permettre aux utilisateurs de récupérer les mises à jour du canal
La méthode ultra automatique
C'est utile quand vous ne voulez pas créer votre propre backend pour définir les canaux ; c'est rapide à mettre en place.
Avec cette méthode, la seule chose à faire est de permettre à l'un de vos canaux d'être configuré sur « self ».

Ajoutez ensuite ceci dans le code de votre application Ionic. Pour une expérience optimale, utilisez-l’après que l'utilisateur a cliqué sur un bouton comme « s'inscrire à la bêta »
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
Méthode manuelle
C'est utile pour votre équipe interne et rapide à mettre en place. Permettez aux utilisateurs de copier leur deviceID depuis votre app et de vous l'envoyer manuellement. Ce code vous aidera à le récupérer :
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Cachez un bouton quelque part dans votre app, ou affichez-l’uniquement aux utilisateurs connectés avec un admin rôle, par exemple.
Then Go to the Web app or native app Capgo, connect as app admin, select your app, click on the device list.
Saisissez ensuite le deviceID dans la barre de recherche, cliquez sur celui trouvé, puis cliquez sur le lien du canal pour choisir le development, demandez à votre collaborateur de rouvrir l'app, attendez 30 s, puis ouvrez et fermez.
Il devrait recevoir votre version.
Méthode automatique
Cela peut être utile pour vos bêta-testeurs, mais c'est plus long à implémenter.
Comme pour la méthode manuelle, vous devez récupérer le deviceID
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Mais cette fois, vous devez l'envoyer automatiquement à votre backend ; je vous laisse décider de la méthode à utiliser.
Je vous suggère simplement de le stocker dans une base de données, cela vous facilitera la vie plus tard.
Ensuite, dans votre backend, vous devez également l'envoyer au backend de Capgo. Voici deux exemples 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)
}
Envoyez simplement votre device_id dans le corps de la requête vers l'URL déployée, avec la méthode POST pour l'ajouter et DELETE pour le supprimer.
Une fois cela configuré, essayez d'ajouter un bouton dans votre application pour s'inscrire au canal, puis vérifiez dans l'application web que cela a bien été pris en compte.
Vous pouvez également envoyer null pour supprimer l'override
Si vous avez besoin de vérifier par programmation quel override est défini sur un appareil, vous pouvez vous rendre sur la même 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())
Continuer avec Comment envoyer une mise à jour spécifique à un utilisateur ou à un groupe
Si vous utilisez Comment envoyer une mise à jour spécifique à un utilisateur ou à un groupe pour planifier le routage des canaux et le déploiement progressif, connectez-l’avec Canaux pour les détails d'implémentation des canaux, Canaux pour les détails d'implémentation des canaux, Canaux pour les détails d'implémentation des canaux, Solution de bêta-test pour le workflow produit de la Solution de bêta-test, et Solution de ciblage de version pour le workflow produit de la Solution de ciblage de version.