Avete mai desiderato poter inviare una modifica direttamente a un utente specifico per la loro revisione e feedback immediati - senza chiedergli di scaricare e installare una nuova versione da TestFlight o Google Play?
Ho avuto clienti che richiedevano miglioramenti che ho potuto implementare velocemente, ma ottenere i risultati nelle loro mani per la validazione significava inviare un aggiornamento a tutti gli utenti (rischioso per un cambiamento sperimentale) o creare un build personalizzato per il cliente (un fastidio per entrambi).
C'era bisogno di flessibilità. Gli sviluppatori volevano poter servire aggiornamenti diversi a diversi gruppi di utenti, come stakeholder non tecnici, QA o l'intera base utenti quando opportuno.
Non c'era modo per un build di produzione di passare a una versione in corso di sviluppo, raccogliere feedback e poi tornare alla produzione.
È ciò che il channel surfing consente. Un'app installata sul dispositivo di un utente può cambiare i canali di aggiornamento in esecuzione, trasformando un'app di produzione in uno spazio flessibile per la revisione e l'iterazione piuttosto che un punto di arrivo fissato. Ciò è particolarmente utile per i stakeholder non tecnici che lavorano con app di produzione, consentendo loro di testare modifiche e dare feedback direttamente nell'app che già hanno installato.
Capire i canali di aggiornamento
i canali di aggiornamento sono come Capgo si rivolge agli aggiornamenti per versioni specifiche. Ogni versione è associata a un canale, e quel canale determina quali aggiornamenti riceverà.
Esempio, puoi pubblicare aggiornamenti su un preview senza influenzare gli utenti su productionIn passato, cambiare canale richiedeva l'installazione di una versione nativa diversa o la modifica manuale delle assegnazioni dispositivi tramite il pannello di controllo.
Canali in Capgo ti consentono di:
- Destreggi gruppi di utenti diversi con funzionalità diverse
- Targetare gruppi di utenti specifici con funzionalità diverse
- Rilascio progressivo di nuove funzionalità
- Eseguire il rilascio graduale di nuove funzionalità
- Creare programmi di testing beta
Debuggere problemi di produzione con utenti individuali Capgo channels documentation ne copre i dettagli in modo più approfondito.
Come funziona il Channel Surfing?
Il channel surfing consente a un'app installata di estrarre da diversi flussi di aggiornamento senza reinstallare. Un'app installata può cambiare canale di aggiornamento in esecuzione e continuerà a ricevere aggiornamenti dal canale selezionato nuovamente fino a quando l'app non viene disinstallata o cambiata a un altro canale.
In pratica, ciò significa che un proprietario di prodotto o un QA può cambiare un production costruire per, ad esempio, un preview un canale, provare le ultime modifiche. Quando sono finiti di testare, cambiano di nuovo a production nuovamente. Non è necessario reinstallare o creare un build di anteprima separato.
Sotto la cappa, il channel surfing funziona consentendo all'app di dire al client di aggiornamento quale canale utilizzare. Questa scelta può essere cambiata in esecuzione e rimane in vigore fino a quando non viene annullata o sostituita.
Come implementare il Channel Surfing
Prima di poter provare il channel surfing, il tuo progetto deve essere configurato con Capgo Live Updates. Per configurarlo, segui il guida di avvio rapido di Capgo.
The only setup required for channel surfing is enabling “Allow devices to self associate” on each channel you want to switch to in the Capgo dashboard. No code changes or config modifications needed beyond that.
Al suo interno, la navigazione tra canali è guidata da una sola chiamata API:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
Questa imposta il canale utilizzato quando si query Capgo per le aggiornamenti. Scopri di più sul setChannel API.
Navigazione tra canali istantanea (v5.34.0+)
A partire dalla versione del plugin 5.34.0, 6.34.0, 7.34.0 o 8.0.0 (a seconda della tua versione maggiore), setChannel() funziona in modo diverso e molto più veloce:
- Validazione backend (lettura esclusiva): Una richiesta viene inviata al Capgo backend per verificare se il canale è consentito
- Aggiornamento del storage locale: Se la validazione ha successo, il canale viene salvato nel storage locale del dispositivo
- Effetto istantaneo: La prossima verifica dell'aggiornamento utilizza immediatamente il nuovo canale
Precedentemente, setChannel() salvava l'override del canale nel database backend (come Dashboard o API modifiche). Gli dispositivi dovevano attendere la replica del backend (fino a 2 minuti) prima che il nuovo canale fosse riconosciuto. Il nuovo comportamento legge solo dal backend (per la validazione) e memorizza localmente, rendendo le scelte di canale istantanee.
Flusso di scelta del canale completo
Per una migliore esperienza utente, desidererai di solito fare di più che solo cambiare il canale e attendere il prossimo riavvio dell'app. Un approccio comune è controllare immediatamente gli aggiornamenti, scaricarli se disponibili e ricaricare l'app per far sì che l'utente atterri direttamente sull'aggiornamento selezionato del canale.
Un flusso tipico assomiglia a questo:
- Cambiare il canale (
setChannel) - Controllare gli aggiornamenti (
getLatest) - Eseguire l'aggiornamento (
download,setonext) - Ricaricare l'app se necessario (
reload)
Ecco un esempio completo:
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');
How strutturare questo flusso è a tua scelta. Potresti suddividere questi passaggi in più interazioni o eseguirli tutti alla volta. Indipendentemente da come strutturi il flusso, assicurati di tenere conto degli errori. Problemi di rete o un canale non valido possono impedire di applicare un aggiornamento.
La Unica Richiesta: Abilita L'assegnazione Auto
Questo è l'unica cosa di cui hai bisogno per abilitare il canale surf. Prima che il tuo app possa passare a un canale utilizzando setChannel()Per abilitare l'assegnazione automatica per quel canale, accedi al Capgo dashboard.
- Vai alla Sezione Sezione del tuo pannello di controllo Capgo.
- Clicca sul nome del canale che desideri gestire
- Enable “Allow devices to self associate”
- Salva le modifiche

È tutto. Nessuna modifica di configurazione è necessaria nell'app. Nessuna defaultChannel impostazione è richiesta. Basta abilitare l'assegnazione automatica sui canali che desiderate che gli utenti possano cambiare.
Se questa impostazione è disabilitata, qualsiasi tentativo di chiamare setChannel() con questo canale fallirà e l' channelPrivate evento si attiverà.
Elenco dei Canali Disponibili
È possibile estrarre l'elenco dei canali disponibili per l'assegnazione automatica:
const { channels } = await CapacitorUpdater.listChannels();
console.log('Available channels:', channels.map(c => c.name));
// Use this to build a channel selector UI
Questo restituisce solo i canali dove l'assegnazione automatica è abilitata.
Ottieni il Canale Attuale
Controlla quale canale il dispositivo è attualmente assegnato:
const { channel } = await CapacitorUpdater.getChannel();
console.log('Current channel:', channel);
Ritorna al Canale Predefinito
To rimuovere l'override del canale e tornare alla configurazione predefinita:
await CapacitorUpdater.unsetChannel({});
Questo disconnette il dispositivo da qualsiasi canale assegnato specificamente, causando il suo ritorno alla configurazione defaultChannel o quella cloud predefinita.
Come Testare il Surfing dei Canali
Per vedere il surfing dei canali in azione, avrai bisogno di una versione rilasciata - il @capgo/capacitor-updater API è progettato per le versioni rilasciate. Le versioni di debug caricheranno invece JavaScript da un server di sviluppo, bypassando il normale flusso di aggiornamento.
Prerequisites
L'unico requisito per il surfing dei canali è abilitare ‘Consenti ai dispositivi di associarsi da soli’ su ogni canale che vuoi consentire lo switching. Non sono necessarie modifiche alla configurazione dell'app.
Creazione di una Versione di Test
Costruisci l'app come di consueto:
bun run build && npx cap sync
Creare quindi le tue build native utilizzando Xcode o Android Studio, o utilizzare il tuo pipeline CI/CD. L'applicazione inizierà sul canale impostato come default nel cloud nel tuo Capgo dashboard.
Pubblicazione di Aggiornamenti su Canali diversi
Una volta installato l'app, pubblica aggiornamenti per canali diversi:
# Publish to preview channel
npx @capgo/cli@latest bundle upload --channel preview
# Publish to production channel
npx @capgo/cli@latest bundle upload --channel production
From there, navigate to your channel surfing UI in the app and trigger the channel switch. The app should fetch the update from the selected channel and reload into the new update.
Creazione di un'interfaccia per la selezione del canale
Channel surfing is usually something you want to expose to a limited set of users, not to everyone using your app. For example, you might have a button available to authenticated employees only that switches the app to the preview channel.
Ecco un esempio di componente React per un commutatore di canali:
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>
);
}
Aggiornamenti OTA da Tenere a mente
Nessuno di questi è specifico per la navigazione tra canali, ma tendono a diventare evidenti rapidamente non appena iniziate a cambiare canale in esecuzione.
Versione di Esecuzione Incompatibile
Updates in Capgo are tied to native app versions. If the native version of an update doesn’t match the native version of the installed app, the update won’t be downloaded or applied. When channel surfing, this typically shows up as the app switching channels but no update being applied, even though one exists on that channel.
This usually means the update was published from a different native version of the app. Make sure your channel’s bundle is compatible with the native version installed on the device.
Rimuovere o Annullare Aggiornamenti
Se un'app ha già scaricato un aggiornamento per un canale, cancellando quell'aggiornamento dal dashboard Capgo non lo elimina dai dispositivi che già lo hanno. future download.
La via più affidabile per annullare un aggiornamento dannoso è pubblicare un aggiornamento noto e sicuro sullo stesso canale. Questo crea un nuovo aggiornamento in cima alla storia del canale, che i clienti tratteranno come la versione più recente e applicheranno al suo posto.
Capgo fornisce anche un meccanismo di rollback che può istruire i clienti a ripetere un aggiornamento stabile precedente o a cadere indietro all'aggiornamento incorporato nel build.
Considerazioni per la Migrazione dei Dati
Switching canali cambia il bundle JavaScript che l'app esegue. Se la tua app dipende da migrazioni o forme dei dati che non sono compatibili tra canali, passare avanti e indietro può causare problemi.
Ad esempio, se un aggiornamento beta applica una migrazione del database, la versione di produzione potrebbe non capire lo schema nuovo. I sviluppatori dovrebbero assicurarsi che le loro aggiornamenti rimangano sicuri per passare tra loro o limitare il passaggio a una sola direzione quando necessario.
Perché il Surfing dei Canali Migliora l'Iterazione Mobile
Navigazione tra canali è particolarmente utile quando si deve esaminare rapidamente le modifiche in un ambiente di produzione.
Validazione Rapida
Immagina un bug di urgenza da correggere che richiede una validazione prima di essere distribuito ampiamente. Con il canale di navigazione, il cambiamento può essere isolato in un piccolo insieme di utenti designati che possono esaminarlo prima che raggiunga la produzione.
Recensione degli stakeholder
Un proprietario di prodotto o un QA possono passare la loro installazione di produzione a un altro canale di aggiornamento, verificare la correzione o la funzionalità e poi tornare indietro una volta che sono finiti.
Testaggio semplificato
Questo rende più facile coinvolgere gli stakeholder non tecnici nella revisione e nella decisione, mantenendo il workflow fluido. Una sola installazione di produzione diventa uno strumento flessibile per il testaggio, la feedback e la validazione.
Utilizzo
- Testaggio QA: I team QA possono passare tra le branch di funzionalità
- Programmi beta: Gli utenti si iscrivono al canale beta per l'accesso anticipato
- Recensione degli stakeholder: I proprietari di prodotto esaminano le modifiche prima della release
- Test di A/B: Assegna gli utenti a canali diversi per gli esperimenti
- Debugging: Passa un utente specifico a un canale di debug per diagnosticare gli errori
Comparison: Metodi di cambio canale
| Metodo | Effetto Tempo | Persistente Dove | Utilizzo |
|---|---|---|---|
setChannel() context |
Instant | Dispositivo solo (locale) | Switching canale in-app iniziato dall'utente |
| Override dispositivo dashboard | Fino a 2 min | Database backend | Modifiche iniziate dall'amministratore per dispositivi specifici |
| API assegnazione canale | Fino a 2 min | Database backend | Integrazioni backend automatizzate |
Per una migliore esperienza utente quando si costruiscono UI di switching canale, utilizzare sempre il plugin. setChannel() method.
Metodi raccomandati
- Limitare l'accesso: La navigazione tra canali è di solito per uso interno - non esporla a tutti gli utenti
- Gestire gli erroriSempre gestisci gli errori con delicatezza durante lo switching tra canali
- Verificare la compatibilità: Assicurati che gli aggiornamenti sui diversi canali siano compatibili con la versione nativa installata
- Documentare i canali: Tieni una documentazione chiara su cosa ogni canale è destinato a fare
- Monitorare l'utilizzo: Traccia quali dispositivi sono su quali canali per il debugging
Risorse
- Capgo Live Updates Documentation
- Documentazione dei canali
- Riferimento al plugin API
- Capgo CLI Comandi
Conclusioni
Il channel surfing trasforma il modo in cui puoi iterare sul tuo app Capacitor. Invece di trattare le costruzioni di produzione come punti di fine fissa, diventano strumenti flessibili per la verifica, la validazione e l'iterazione rapida.
Con il switching dei canali istantaneo introdotto nelle versioni recenti del plugin, l'esperienza è ora senza soluzione di continuità - gli utenti possono passare dai canali e ricevere immediatamente aggiornamenti dal nuovo canale senza alcun periodo di attesa.
Sia che tu stia validando le correzioni di bug con gli stakeholder, esegua programmi beta, o debbuggi problemi con gli utenti specifici, il channel surfing ti dà la flessibilità di spedire l'aggiornamento giusto all'utente giusto al momento giusto.
Continua da Channel Surfing per Capgo: Come passare ai canali di aggiornamento in tempo di esecuzione
Se stai utilizzando Channel Surfing per Capgo: Come passare ai canali di aggiornamento in tempo di esecuzione per pianificare la routing dei canali e la distribuzione in fasi, collegalo con Canali per i dettagli di implementazione nei canali, Canali per i dettagli di implementazione nei canali, Canali per i dettagli di implementazione nei canali, Soluzione di Test Beta per il flusso di lavoro del prodotto nella Soluzione di Test Beta. Soluzione di Targeting di Versione per il workflow del prodotto nella Soluzione di Targeting della Versione.