Avant-propos
Lorsque vous commencez à apprécier le système de mise à jour de Capgo, comme moi pour mes applications, vous allez commencer à ressentir le sentiment « Qu'est-ce que je pourrais faire de plus ? »
J'ai ressenti le même sentiment, mais étant le créateur de Capgo, j'ai pu prendre un coup d'œil !
Puisque tout est open-source, vous avez également ce pouvoir :)
La prochaine douleur que j'ai ressentie 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 faire entrer les gens dans votre équipe et leur faire comprendre comment obtenir cela.
Et bien sûr, chaque fois que vous envoyez à Apple, vous avez un processus de révision aléatoire par un bot qui peut prendre 5 minutes ou 5 heures, vous ne savez jamais.
J'ai eu souvent mon présentation retardée par cela…
Et pour Google, c'est encore pire, le grand mystère 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 canal dans Capgo.
npx @capgo/cli@latest bundle upload -c production mettra à 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 l'action __CAPGO_KEEP_0__ de GitHub action.
Then you have 2 way to let users get the updates from the channel
Voie automatique exceptionnelle
Cela peut être utile lorsque vous ne souhaitez pas créer votre propre backend pour le canal, c'est rapide à mettre en œuvre.
Avec cela, la seule chose que vous devez faire est d'autoriser l'un de vos canaux à être auto pour le paramétrage.

Et puis ajoutez ensuite cela dans le code de votre application Ionic, pour une expérience optimale, utilisez cela après que l'utilisateur clique sur un bouton comme « inscrire pour la bêta »
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
Méthode manuelle
Cela peut être utile pour votre équipe interne, c'est rapide à mettre en œuvre. Permettre aux utilisateurs de copier leur ID de appareil depuis votre application et de le transmettre à 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 afficher le bouton uniquement aux utilisateurs connectés avec un admin rôle, par exemple.
Alors allez dans l'application Web ou l'application native Capgo, connectez-vous en tant qu'administrateur de l'application, sélectionnez votre application, cliquez sur la liste des appareils.
Alors insérez dans la barre de recherche l'ID de l'appareil, cliquez sur l'un trouvé et puis cliquez sur le lien du canal, choisissez le developmentcanal, demandez à votre collègue d'ouvrir l'application à nouveau, attendez 30 secondes et fermez l'application.
Il devrait obtenir votre version.
Voie automatique.
Cela peut être utile pour vos testeurs bêta, ce qui prend plus de temps à mettre en œuvre.
Même chose que la voie 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, ce qui facilitera votre vie plus tard.
Ensuite, dans votre backend, vous devez l'envoyer à Capgo backend également. Voici deux code exemples :
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)
}
Et envoyez simplement votre device_id dans le corps de la requête vers l'URL déployée avec la méthode POST pour ajouter et la méthode DELETE pour supprimer.
Après avoir configuré cela, 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 To supprimer l'override
Si vous avez besoin de vérifier de manière programmée quelle mise à jour est appliquée sur un appareil, vous pouvez obtenir cela 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())
Continuez de la même manière que pour 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 la mise en route des canaux et la mise en production étape par étape, connectez-l’avec Canaux context : nom de fonctionnalité de canaux de mise à jour de Capgo. Page/zone : page de marketing de solutions de Capgo. Rôle : étiquette de navigation ou élément de navigation court. Vu dans : page solutions/white-label.astro. Clé de message `solutions_white_label_visual_cell2_value` (Valeur de cellule visuelle Solutions White Label) pour les détails d'implémentation dans Canaux, Canaux context : nom de fonctionnalité de canaux de mise à jour de Capgo. Page/zone : page de marketing de solutions de Capgo. Rôle : étiquette de navigation ou élément de navigation court. Vu dans : page solutions/white-label.astro. Clé de message `solutions_white_label_visual_cell2_value` (Valeur de cellule visuelle Solutions White Label) pour les détails d'implémentation dans Canaux, Solution de test bêta pour le flux de travail du produit dans la Solution de test bêta, et Solution de ciblage de version pour le flux de travail du produit dans la Solution de ciblage de version.