Avant-propos
Lorsque vous commencez à apprécier le système de mise à jour de Capgo, comme je le fais pour mes applications, vous allez commencer à ressentir le sentiment “Et si je voulais plus ?”
Je ressentais le même sentiment, mais étant le créateur de Capgo, j'ai pu jeter un coup d'œil !
Depuis que tout est open-source, vous avez également ce pouvoir :)
Le prochain problème que j'ai rencontré dans le processus de distribution de l'application Capacitor est de faire tester les mises à jour à d'autres collègues !
Avec TestFlight, le problème est simple, mais il faut du temps pour convaincre les gens de rejoindre votre équipe et de comprendre comment obtenir l'application.
Et bien sûr, chaque fois que vous envoyez à Apple, vous avez un processus de révision aléatoire effectué par un bot qui peut prendre 5 minutes ou 5 heures, vous ne savez jamais.
J'ai souvent dû reporter ma présentation à cause de cela…
Et pour Google, c'est encore pire, la grande énigme de ma vie, la mise en production d'une version prend moins de 2 heures, mais la mise en production d'une bêta proche prend 1-2 jours.
Solution
Pour résoudre cela, j'ai créé le système de canaux dans Capgo.
npx @capgo/cli@latest bundle upload -c production mettre à jour tous les utilisateurs (si le canal de production est défini sur la valeur par défaut)
Si vous le faites npx @capgo/cli@latest bundle upload -c development alors la version atterrit dans un canal différent, cela peut être automatisé dans GitHub action.
Ensuite, vous avez 2 façons de permettre aux utilisateurs de recevoir les mises à jour du canal.
Super mode automatique
Cela peut être utile lorsque vous ne souhaitez pas créer votre propre backend pour le canal, c'est rapide à mettre en œuvre.
En utilisant celle-ci, vous n'avez besoin de faire qu'autoriser l'un de vos canaux à être auto-configuré.

Et puis ajoutez cela dans le code de votre application Ionic, pour une meilleure expérience, utilisez cette méthode après que l'utilisateur clique sur un bouton comme « s'inscrire pour la bêta »
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
Mode manuel
Cela peut être utile pour votre équipe interne, c'est rapide à mettre en œuvre. Autorisez les utilisateurs à copier leur ID de device depuis votre application et envoyez-lez vous manuellement, ce code vous aidera à l'obtenir :
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Cacher un bouton quelque part dans votre application, ou affichez le bouton uniquement aux utilisateurs connectés avec un rôle, par exemple. admin Ensuite, rendez-vous sur l'application Web ou l'application native __CAPGO_KEEP_0__, connectez-vous en tant qu'administrateur de l'application, sélectionnez votre application, cliquez sur la liste des appareils.
Then Go to the Web app or native app Capgo, connect as app admin, select your app, click on the device list.
__CAPGO_KEEP_0__ developmentDemandez à votre collègue d'ouvrir l'application à nouveau, attendez 30 sec et ouvrez-les.
Votre version doit être affichée.
Méthode automatique
Cela peut être utile pour vos testeurs bêta, mais cela prend plus de temps à mettre en œuvre.
Même chose que la méthode manuelle, vous devez obtenir l'ID du dispositif
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 comment vous le faites.
Je vous suggère simplement de le stocker dans une base de données, cela facilitera votre vie plus tard.
Ensuite, dans votre backend, vous devez l'envoyer à Capgo backend également. Voici deux exemples code ci-dessous :
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)
}
Envoi d'un POST avec votre device_id dans le corps de la requête vers l'URL déployée avec les méthodes POST et DELETE pour supprimer.
Une fois cela configuré, essayez d'ajouter un bouton dans votre application pour vous inscrire à la chaîne, et vérifiez dans l'application web si cela a été configuré.
Vous pouvez également envoyer null pour supprimer l'override
Si vous avez besoin de vérifier de manière programmée quel override est défini sur un appareil, vous pouvez obtenir 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())