Avez-vous déjà souhaité envoyer une modification directement à un utilisateur spécifique pour sa revue et son retour immédiats - sans leur demander de télécharger et d'installer une nouvelle version de TestFlight ou Google Play?
J'ai eu des clients qui demandaient des améliorations que j'ai pu mettre en œuvre rapidement, mais pour obtenir les résultats dans leurs mains pour les valider, il fallait envoyer une mise à jour à tous les utilisateurs (risqué pour une modification expérimentale) ou créer une version spécifique pour le client (un travail pour les deux).
Ce qui manquait était de la flexibilité. Les développeurs voulaient pouvoir servir des mises à jour différentes à différents groupes d'utilisateurs, comme les parties prenantes non techniques, la QA ou l'ensemble de la base d'utilisateurs lorsqu'il était approprié.
Il n'y avait pas de moyen pour une mise en production de passer à une version en cours de développement, de recueillir des commentaires, puis de revenir à la production.
C'est ce que la navigation entre les chaînes permet. Une application installée sur un appareil utilisateur peut passer à des canaux de mise à jour en temps de exécution, transformant une application de production en un espace flexible pour la revue et l'itération plutôt qu'un point final fixe.
Cela est particulièrement utile pour les parties prenantes non techniques travaillant avec des applications de production, leur permettant de tester des modifications et de donner des commentaires directement dans l'application qu'elles ont déjà installée.
Update channels are how Capgo targets updates to specific builds. Each build is associated with a channel, and that channel determines which updates it will receive.
Les canaux de mise à jour sont la façon dont __CAPGO_KEEP_0__ cible les mises à jour vers des builds spécifiques. Chaque build est associé à un canal, et ce canal détermine lesquelles des mises à jour il recevra. preview Par exemple, vous pouvez publier des mises à jour dans un productioncanaux sans affecter les utilisateurs sur
Channels in Capgo allow you to:
- Les canaux dans __CAPGO_KEEP_0__ vous permettent de :
- Cibler des groupes d'utilisateurs spécifiques avec des fonctionnalités différentes : Tester A/B en affectant les utilisateurs à différents canaux
- Déployez progressivement de nouvelles fonctionnalités
- Créez des programmes de test bêta
- Déboguez les problèmes de production avec des utilisateurs individuels
Si vous n'êtes pas familiarisé avec les canaux de mise à jour, le Capgo documentation des canaux couvre ces sujets en détail. Qu'est-ce que Channel Surfing ?
Channel Surfing permet à une application installée de récupérer à partir de différents flux de mise à jour sans devoir être réinstallée. Une application installée peut basculer entre les canaux de mise à jour en temps de exécution, et elle continuera à recevoir des mises à jour du nouveau canal sélectionné jusqu'à ce que l'application soit supprimée ou basculée vers un autre canal.
En pratique, cela signifie que le propriétaire d'un produit ou un responsable QA peut basculer une
construction vers, par exemple, un production canaux, essayer les dernières modifications. Lorsqu'ils ont terminé de tester, ils basculent de nouveau vers preview encore. Il n'est pas nécessaire de réinstaller ou de créer une version de prévisualisation séparée. production Channel Surfing permet aux développeurs de tester rapidement et facilement les mises à jour de leurs applications sans avoir à réinstaller l'application ou à créer une version de prévisualisation.
En arrière-plan, la navigation entre les chaînes fonctionne en permettant à l'application d'indiquer au client d'actualisation quelle chaîne utiliser. Cette choix peut être modifié en temps réel et reste en vigueur jusqu'à ce qu'il soit supprimé ou remplacé.
Comment Mettre en œuvre la Navigation entre les Chaînes
Avant de pouvoir essayer la navigation entre les chaînes, votre projet doit être configuré avec Capgo Mises à jour en temps réel. Pour configurer cela, suivez le guide de démarrage rapide Capgo. Le guide de démarrage rapide Capgo.
La seule configuration requise pour la navigation entre les chaînes est d'autoriser aux appareils à se lier automatiquement sur chaque chaîne que vous souhaitez basculer sur dans le tableau de bord Capgo. Aucune modification ou modification de configuration code n'est nécessaire au-delà de cela.
En fin de compte, la navigation entre les chaînes est pilotée par une seule appelle API :
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
Cela définit la chaîne utilisée lors de la recherche de mises à jour Capgo. En savoir plus sur la fonctionnalité setChannel API.
Navigation Instantanée entre les Chaînes (v5.34.0+)
À partir de la version du plugin 5.34.0, 6.34.0, 7.34.0 ou 8.0.0 (selon votre version majeure), setChannel() fonctionne différemment et beaucoup plus rapidement :
- Validation de l'arrière-plan (lecture seule): Une requête est envoyée vers l'arrière-plan Capgo pour valider que le canal est autorisé
- Mise à jour de la mémoire locale: Si la validation passe, le canal est enregistré dans la mémoire locale du dispositif
- Effet instantané: La prochaine vérification de mise à jour utilise le nouveau canal immédiatement
Jusqu'à présent, setChannel() enregistrait la surcharge de canal dans la base de données de l'arrière-plan (comme Dashboard ou API modifications). Les appareils devaient attendre la réplication de l'arrière-plan (jusqu'à 2 minutes) avant que le nouveau canal soit reconnu. Le nouveau comportement ne lit que de l'arrière-plan (pour la validation) et stocke localement, ce qui rend les changements de canal instantanés.
Flux complet de changement de canal
Pour une meilleure expérience utilisateur, vous voulez généralement faire plus que simplement passer le canal et attendre la prochaine redémarrage de l'application. Une approche courante consiste à vérifier immédiatement les mises à jour, à les télécharger si disponibles, et à recharger l'application afin que l'utilisateur se retrouve directement sur l'update sélectionné du canal.
Un flux typique ressemble à ceci :
- Changer de chaîne (
setChannel) - Vérifier la mise à jour (
getLatest) - Récupérer et appliquer la mise à jour (
download,setounext) - Recharger l'application si nécessaire (
reload)
Voici un exemple complet :
import { CapacitorUpdater } from '@capgo/capacitor-updater';
async function switchChannel(selectedChannel: string) {
try {
// 1. Set the updates channel (with optional auto-update trigger)
await CapacitorUpdater.setChannel({
channel: selectedChannel,
triggerAutoUpdate: true // Immediately check for updates
});
console.log(`Switched to channel: ${selectedChannel}`);
// If you want more control, handle the update manually:
// const latest = await CapacitorUpdater.getLatest();
// if (latest.url) {
// const bundle = await CapacitorUpdater.download({
// url: latest.url,
// version: latest.version
// });
// await CapacitorUpdater.set({ id: bundle.id });
// }
} catch (error) {
console.error('Failed to switch channel:', error);
}
}
// Switch to the beta channel
switchChannel('beta');
La façon dont vous structurez ce flux vous appartient. Vous pouvez diviser ces étapes en plusieurs interactions ou les exécuter toutes à la fois. Quelle que soit la façon dont vous structurez le flux, assurez-vous de tenir compte des échecs. Les problèmes de réseau ou une chaîne non valide peuvent tous empêcher une mise à jour d'être appliquée.
La Seule Exigence : Activer l'Affectation Auto
C'est la seule chose que vous devez faire pour activer la navigation entre chaînes. Avant que votre application puisse passer à une chaîne en utilisant la fonctionnalité de navigation entre chaînes de setChannel(), vous devez activer l'affectation auto pour cette chaîne dans le tableau de bord Capgo :
- Allez à le Canaux section de votre tableau de bord Capgo
- Cliquez sur le nom du canal que vous souhaitez gérer
- Activer “Autoriser les appareils à se lier automatiquement”
- Enregistrer les modifications

C'est tout. Aucune modification de configuration nécessaire dans votre application. Aucune defaultChannel configuration requise. Il suffit d'activer la liaison automatique sur les canaux auxquels les utilisateurs devront pouvoir passer.
Si cette option est désactivée, toute tentative de setChannel() appel avec ce canal échouera et l' channelPrivate événement se déclenchera.
Liste des Canaux Disponibles
Vous pouvez récupérer la liste des canaux disponibles pour l'auto-assignation :
const { channels } = await CapacitorUpdater.listChannels();
console.log('Available channels:', channels.map(c => c.name));
// Use this to build a channel selector UI
Cela ne retourne que les canaux où l'auto-assignation est activée.
Récupérer le Canal Actuel
Vérifiez le canal auquel le dispositif est actuellement assigné :
const { channel } = await CapacitorUpdater.getChannel();
console.log('Current channel:', channel);
Rétablir le Canal Par Défaut
Pour supprimer la surcharge de canal et revenir à la valeur par défaut :
await CapacitorUpdater.unsetChannel({});
Cela débranche le dispositif de tout canal spécifiquement assigné, ce qui le fait retomber sur le defaultChannel dans votre configuration ou le canal par défaut du cloud.
Comment Tester la Navigation de Canaux
Pour voir la navigation de canaux en action, vous aurez besoin d'une version de sortie - le @capgo/capacitor-updater API est conçu pour les versions de sortie. Dans les builds de débogage, l'application charge généralement du JavaScript à partir d'un serveur de développement au lieu de cela, ce qui contourne le flux de mise à jour normal.
Prérequis
La seule exigence pour la navigation entre chaînes est d'activer “Autoriser les appareils à se lier automatiquement” sur chaque chaîne que vous souhaitez autoriser à la navigation. Aucune modification de configuration n'est nécessaire dans votre application.
Création d'une Build de Test
Construirez votre application comme d'habitude :
bun run build && npx cap sync
Créez ensuite vos builds natifs à l'aide de Xcode ou Android Studio, ou utilisez votre pipeline CI/CD. L'application commencera sur la chaîne définie par défaut dans votre tableau de bord Capgo.
Publication de Mises à Jour sur Différentes Chaînes
Une fois l'application installée, publiez des mises à jour sur différentes chaînes :
# Publish to preview channel
npx @capgo/cli@latest bundle upload --channel preview
# Publish to production channel
npx @capgo/cli@latest bundle upload --channel production
À partir de là, naviguez vers votre interface de navigation entre chaînes dans l'application et déclenchez le basculement de chaîne. L'application devrait récupérer la mise à jour de la chaîne sélectionnée et se recharger dans la nouvelle mise à jour.
Conception d'une Interface de Basculement de Chaîne
La navigation entre chaînes est généralement quelque chose que vous souhaitez exposer à un ensemble limité d'utilisateurs, et non à tous les utilisateurs de votre application. Par exemple, vous pourriez avoir un bouton disponible uniquement pour les employés authentifiés qui bascule l'application vers la chaîne de prévisualisation.
Voici un exemple de composant React pour un sélecteur de chaînes :
import { useState, useEffect } from 'react';
import { CapacitorUpdater } from '@capgo/capacitor-updater';
export function ChannelSwitcher() {
const [currentChannel, setCurrentChannel] = useState<string>('');
const [availableChannels, setAvailableChannels] = useState<string[]>([]);
const [isLoading, setIsLoading] = useState(false);
useEffect(() => {
loadChannelInfo();
}, []);
async function loadChannelInfo() {
const { channel } = await CapacitorUpdater.getChannel();
setCurrentChannel(channel || 'default');
const { channels } = await CapacitorUpdater.listChannels();
setAvailableChannels(channels.map(c => c.name));
}
async function handleChannelSwitch(channel: string) {
setIsLoading(true);
try {
await CapacitorUpdater.setChannel({
channel,
triggerAutoUpdate: true
});
setCurrentChannel(channel);
// App will update in background or on next restart
} catch (error) {
console.error('Failed to switch channel:', error);
} finally {
setIsLoading(false);
}
}
return (
<div>
<p>Current channel: {currentChannel}</p>
<div>
{availableChannels.map(channel => (
<button
key={channel}
onClick={() => handleChannelSwitch(channel)}
disabled={isLoading || channel === currentChannel}
>
Switch to {channel}
</button>
))}
</div>
</div>
);
}
Mises à jour OTA : les pièges
Aucun de ces problèmes ne sont spécifiques à la navigation entre chaînes, mais ils tendent à devenir apparents rapidement une fois que vous commencez à changer de chaîne en temps de exécution.
Incompatibilités de versions en temps de exécution
Les mises à jour dans Capgo sont liées aux versions natives de l'application. Si la version native d'une mise à jour ne correspond pas à la version native de l'application installée, la mise à jour ne sera pas téléchargée ou appliquée. Lors de la navigation entre chaînes, cela se manifeste généralement par l'application qui change de chaîne mais sans que la mise à jour ne soit appliquée, même si elle existe sur cette chaîne.
Cela signifie généralement que la mise à jour a été publiée à partir d'une version native différente de l'application. Assurez-vous que le bundle de votre chaîne est compatible avec la version native installée sur le dispositif.
Suppression ou annulation de mises à jour
Si une application a déjà téléchargé une mise à jour pour une chaîne, supprimer cette mise à jour du tableau de bord Capgo ne la supprime pas des appareils qui l'ont déjà reçue. La suppression ne s'arrête que les téléchargements futurs. La méthode la plus fiable pour annuler une mise à jour incorrecte est de publier une mise à jour connue comme bonne sur la même chaîne. Cela crée une nouvelle mise à jour en haut de l'historique de la chaîne, que les clients traiteront comme la dernière version et appliqueront à la place. __CAPGO_KEEP_0__ fournit également un mécanisme de retraitement qui peut instruire les clients à réappliquer une mise à jour précédente stable ou à revenir à la mise à jour intégrée dans le build.
__CAPGO_KEEP_0__
Capgo
Considérations relatives à la migration de données
Le passage d'un canal à un autre change le bundle JavaScript exécuté par l'application. Si votre application dépend de migrations ou de formes de données qui ne sont pas compatibles entre canaux, le passage d'un canal à l'autre peut entraîner des problèmes.
Par exemple, si une mise à jour bêta applique une migration de base de données, la version de production ne comprend peut-être pas le nouveau schéma. Les développeurs doivent s'assurer que leurs mises à jour restent sûres pour passer d'un canal à l'autre ou restreindre le passage à une seule direction lorsque cela est nécessaire.
Pourquoi le Channel Surfing améliore l'itération mobile
Le Channel Surfing est particulièrement utile lorsque vous avez besoin de passer en revue rapidement les changements dans un environnement de production.
Validation Rapide
Imaginez une correction urgente d'un bug qui nécessite une validation avant d'être déployée largement. Avec le Channel Surfing, la modification peut être isolée à un petit ensemble d'utilisateurs désignés qui peuvent la passer en revue avant qu'elle ne rejoigne la production.
Examen par les parties prenantes
Un propriétaire de produit ou un responsable de la qualité peut passer sa version de production installée à un autre canal de mise à jour, vérifier la correction ou la fonctionnalité, et puis passer à nouveau une fois qu'il a terminé.
Test simplifié
Cela facilite l'implication des parties prenantes non techniques dans l'examen et la prise de décision, tout en maintenant le flux de travail fluide. Une seule version de production devient un outil flexible pour les tests, les retours et la validation.
Utilisations
- Test de Qualité: Faites passer l'équipe QA entre les branches de fonctionnalités
- Programmes Bêta: Les utilisateurs s'inscrivent pour le canal bêta pour un accès précoce
- Examen par les Parties Preparées: Les propriétaires de produit prévisualisent les modifications avant la mise en production
- Test A/B: Affectez les utilisateurs à différents canaux pour des expériences
- Débogage: Faites passer un utilisateur spécifique à un canal de débogage pour diagnostiquer les problèmes
Comparaison : Méthodes de Changement de Canal
| Méthode | Durée d'effet | Sauvegardé où | Utilisation |
|---|---|---|---|
setChannel() à partir de plugin | Instantané | Seulement appareil (local) | Changement de canal initié par l'utilisateur en application |
| Survol de l'appareil sur le tableau de bord | Jusqu'à 2 min | Base de données backend | Changements administratifs pour appareils spécifiques |
| API affectation de canal | Jusqu'à 2 min | Base de données backend | Intégrations backend automatiques |
Pour obtenir la meilleure expérience utilisateur lors de la création d'interfaces utilisateur permettant de basculer entre les canaux, utilisez toujours la méthode du plugin. setChannel() Méthode.
Meilleures Pratiques
- Limitation d'accèsLa navigation entre les canaux est généralement réservée à l'utilisation interne - ne la rendez pas accessible à tous les utilisateurs
- Gestion des ErreursGérez toujours les erreurs avec tact lorsque vous basculez entre les canaux
- Validation de la compatibilitéAssurez-vous que les mises à jour sur différents canaux soient compatibles avec la version native installée
- Canaux de documentation: Gardez une documentation claire sur la finalité de chaque canal
- Surveillance de l'utilisation: Suivez les appareils qui sont sur quelles canaux pour le débogage
Ressources
- Capgo Mises à jour en direct Documentation
- Documentation des canaux
- Référence du plugin API
- Capgo CLI Commandes
Conclusion
La navigation entre les canaux transforme la façon dont vous pouvez itérer sur votre application Capacitor. Au lieu de considérer les builds de production comme des points de terminaison fixes, ils deviennent des outils flexibles pour le test, la validation et l'itération rapide.
Avec la mise à jour instantanée des canaux introduite dans les dernières versions de plugin, l'expérience est maintenant fluide - les utilisateurs peuvent passer d'un canal à l'autre et recevoir immédiatement des mises à jour du nouveau canal sans aucun délai.
Quelle que soit la validation des correctifs de bogues avec les parties prenantes, la mise en œuvre de programmes bêta ou la débogage d'issues avec des utilisateurs spécifiques, la navigation entre les chaînes vous offre la flexibilité de livrer la mise à jour appropriée à l'utilisateur approprié au bon moment.