Avez-vous déjà souhaité envoyer une modification directement à un utilisateur spécifique pour sa revue et son retour d'information 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 servir des mises à jour différentes à différents groupes d'utilisateurs, comme les parties prenantes non techniques, la QA ou la base d'utilisateurs entière lorsqu'il était approprié.
Il n'y avait pas de moyen pour une version de production de passer à une version en cours de développement, de recueillir des retours d'information et de retourner ensuite à la production.
C'est ainsi que la navigation entre les chaînes est activée. Une application installée sur un appareil utilisateur peut basculer entre les 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. C'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.
Comprendre les canaux de mise à jour
Les canaux de mise à jour sont la manière dont Capgo 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.
Par exemple, vous pouvez publier des mises à jour dans un preview canaux sans affecter les utilisateurs sur production. Dans le passé, la bascule entre les canaux nécessitait l'installation d'une version native différente ou la modification manuelle des affectations d'appareil à travers le tableau de bord.
Les canaux dans Capgo vous permettent de :
- Cibler des groupes d'utilisateurs spécifiques avec des fonctionnalités différentes
- Exécuter des tests A/B en affectant les utilisateurs à différents canaux
- Lancer 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 d'actualisation, le Capgo documentation des canaux d'actualisation les couvre en détail.
Qu'est-ce que Channel Surfing ?
Channel Surfing permet à une application installée de récupérer des mises à jour de différents flux sans devoir réinstaller. Une application installée peut basculer entre les canaux d'actualisation en temps de exécution, et elle continuera à recevoir des mises à jour du nouveau canal sélectionné jusqu'à ce que l'application soit désinstallé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 production construction vers, par exemple, un preview canaux, essayer les dernières modifications. Lorsqu'ils ont terminé de tester, ils basculent vers production à nouveau. Il n'est pas nécessaire de réinstaller ou de créer une version de prévisualisation séparée.
Sous le capot, Channel Surfing fonctionne en permettant à l'application de dire au client de mise à jour quel canal utiliser. Cette choix peut être changé en temps de exécution et reste en vigueur jusqu'à ce qu'il soit supprimé ou remplacé.
How to Implement Channel Surfing
Avant de pouvoir essayer la navigation entre chaînes, votre projet doit être configuré avec Capgo Mises à jour en direct. Pour configurer cela, suivez le guide de démarrage rapide Capgo.
La seule configuration requise pour la navigation entre chaînes est d'activer « Autoriser les appareils à se lier automatiquement » sur chaque chaîne que vous souhaitez passer à la chaîne suivante dans le tableau de bord Capgo. Aucune modification de code ou de modification de configuration n'est nécessaire au-delà de cela.
En fin de compte, la navigation entre 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 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 à l'arrière-plan Capgo pour valider que le canal est autorisé
- Mise à jour de la mémoire intermédiaire: Si la validation passe, le canal est enregistré dans la mémoire intermédiaire du dispositif
- Effet instantané: La prochaine vérification de mise à jour utilise le nouveau canal immédiatement
Jusqu'à présent, setChannel() enregistrait la surcharge du canal dans la base de données de l'arrière-plan (comme le tableau de bord ou les modifications API). 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 de changement de canal complet
Pour une meilleure expérience utilisateur, vous voulez généralement faire plus que simplement changer 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 la mise à jour sélectionnée du canal.
Un flux typique ressemble à ceci :
- Changer le canal (
setChannel) - Vérifiez si une mise à jour est disponible (
getLatest) - Récupérez et appliquez la mise à jour (
download,setounext) - Réchargez 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 un canal non valide peuvent tous empêcher l'application d'une mise à jour.
La Seule Exigence : Activer l'Affectation Auto
C'est la seule chose que vous devez faire pour activer la navigation entre les canaux. Avant que votre application puisse passer à un canal à l'aide de setChannel()vous devez activer l'affectation auto pour ce canal dans le tableau de bord Capgo :
- Allez dans le Canaux section dans 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. Aucun defaultChannel paramètre requis. Il suffit d'activer la liaison automatique sur les canaux auxquels les utilisateurs doivent pouvoir passer.
Si ce paramètre est désactivé, 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.
Obtenir le Canal Actuel
Vérifiez le canal auquel le dispositif est actuellement affecté :
const { channel } = await CapacitorUpdater.getChannel();
console.log('Current channel:', channel);
Rétablir le Canal Par Défaut
Pour supprimer l'override 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 fait qu'il retombe 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
The only requirement for channel surfing is enabling “Autoriser les appareils à se connecter automatiquement” No config changes are needed in your app.
Créer une Build de Test
Construirez votre application comme d'habitude :
bun run build && npx cap sync
Puis créez vos builds natives à l'aide de Xcode ou Android Studio, ou utilisez votre pipeline CI/CD. L'application commencera sur le canal défini par défaut dans votre tableau de bord Capgo.
Publier des Mises à Jour sur les Canaux Différents
Une fois l'application installée, publiez des mises à jour sur les canaux :
# 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 canaux dans l'application et déclenchez le changement de canal. L'application devrait récupérer la mise à jour du canal sélectionné et se recharger dans la nouvelle mise à jour.
Construire une Interface de Changement de Canal
La navigation entre canaux est généralement quelque chose que vous souhaitez exposer à un nombre limité d'utilisateurs, et non à tous les utilisateurs de votre application. Par exemple, vous pouvez avoir un bouton disponible uniquement pour les employés authentifiés qui permet de passer l'application sur le canal de prévisualisation.
Ici est un exemple de composant React pour un changement de canal :
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>
);
}
Les Pitfalls de Mise à Jour OTA
Ceux-ci ne sont pas spécifiques à la navigation entre chaînes, mais ils deviennent rapidement apparents une fois que vous commencez à naviguer entre les chaînes en temps de exécution.
Incompatibilités de Versions en Temps de Exécution
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 les chaînes, cela se manifeste généralement par l'application qui change de chaîne mais sans mise à jour appliquée, même si une mise à jour 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à. 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 version la plus récente et appliqueront à la place. __CAPGO_KEEP_0__ fournit également un mécanisme de retraitement qui peut instruire les clients à réappliquer une mise à jour stable précédente ou à revenir à la mise à jour intégrée dans la construction.
Considérations de Migration de Données
Capgo
__CAPGO_KEEP_0__
La mise en canal change le bundle JavaScript que l'application exécute. Si votre application dépend de migrations ou de formes de données qui ne sont pas compatibles entre canaux, la mise en canal 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 la mise en canal à une direction lorsque cela est nécessaire.
Pourquoi la navigation entre les canaux améliore l'itération mobile
La navigation entre les canaux 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 de bogues qui nécessite une validation avant d'être déployée largement. Avec la navigation entre les canaux, la modification peut être isolée à un petit groupe d'utilisateurs désignés qui peuvent la passer en revue avant qu'elle ne rejoigne la production.
Révision des parties prenantes
Un propriétaire de produit ou un responsable qualité peut passer sa mise en production à une autre mise à jour de canal, vérifier la correction ou la fonctionnalité, et puis passer à nouveau une fois qu'ils ont terminé.
Testage Simplifié
Cela facilite la participation des parties prenantes non techniques à la révision et à la prise de décision, tout en maintenant le flux de travail fluide. Une seule mise en production devient une outil flexible pour le testage, les retours et la validation.
Utilisations
- Testage de la qualité: Les équipes QA peuvent passer d'une branche de fonctionnalité à une autre
- Programmes bêta: Les utilisateurs s'abonnent à la chaîne bêta pour avoir accès précoce
- Examen des parties prenantes: Les propriétaires de produit prévisualisent les modifications avant la mise en production
- Tests A/B: Les utilisateurs sont affectés à différentes chaînes pour des expériences
- Débogage: Un utilisateur spécifique est mis dans une chaîne de débogage pour diagnostiquer les problèmes
Comparaison : Méthodes de changement de chaîne
| Méthode | Durée d'effet | Persistance où | Utilisation |
|---|---|---|---|
setChannel() à partir de plugin |
Instantané | Seulement appareil (local) | Changement de canal initié par l'utilisateur en application |
| Survol de l'appareil dans l'interface de dashboard | Jusqu'à 2 min | Base de données backend | Changements initiés par l'administrateur pour des appareils spécifiques |
| API affectation de canal | Jusqu'à 2 min | Base de données backend | Intégrations de backend automatiques |
Pour offrir 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
- Restreindre l'accès: La navigation entre les canaux est généralement réservée à l'utilisation interne - n'y exposez pas tous les utilisateurs
- Gérer les erreurs: Gérez toujours les erreurs de manière gracieuse lors du basculement entre les canaux
- Vérifier la compatibilité: Assurez-vous que les mises à jour sur différents canaux sont compatibles avec la version native installée
- Documenter les canaux: Gardez une documentation claire sur chaque canal.
- Surveiller l'utilisation: Suivez les appareils qui sont sur quelles canaux pour le débogage.
Ressources
- Documentation des mises à jour en direct Capgo
- Documentation des canaux
- Référence du plugin API
- Commandes Capgo CLI
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 la test, la validation et l'itération rapide.
Avec la mise à jour instantanée des canaux introduite dans les versions récentes du 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 attendre.
Qu'il s'agisse de la validation des correctifs de bogues avec les parties prenantes, de la mise en œuvre de programmes bêta ou du débogage d'erreurs avec des utilisateurs spécifiques, la navigation entre les canaux vous donne la flexibilité de livrer la mise à jour appropriée à l'utilisateur approprié au moment approprié.
Continuez à partir de Channel Surfing pour Capgo: Comment passer d'une canal d'actualisation à l'autre en temps réel
Si vous utilisez Channel Surfing pour Capgo: Comment passer d'une canal d'actualisation à l'autre en temps réel pour planifier la routage des canaux et la mise en production étape par étape, connectez-le à Canaux pour les détails d'implémentation dans Canaux, Canaux pour les détails d'implémentation dans Canaux, Canaux pour les détails d'implémentation dans Canaux, Solution de test bêta pour le flux de travail du produit dans 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.