Hai mai desiderato poter inviare una modifica direttamente a un utente specifico per la sua revisione e feedback immediati - senza chiedergli di scaricare e installare una nuova versione da TestFlight o Google Play?
Ho avuto clienti che mi hanno chiesto 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 una versione unica per il cliente (un fastidio per entrambi).
Quello che mancava era la flessibilità. Gli sviluppatori volevano poter servire aggiornamenti diversi a gruppi di utenti diversi, come stakeholder non tecnici, QA o l'intera base utenti quando appropriato.
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.
È questo che la navigazione tra canali consente. Un'app installata su un dispositivo dell'utente può cambiare canale di aggiornamento in esecuzione, trasformando un'app di produzione in uno spazio flessibile per la revisione e l'iterazione piuttosto che un punto di fine fissa. Questo è particolarmente utile per gli stakeholder non tecnici che lavorano con app di produzione, consentendo loro di testare le modifiche e dare feedback direttamente nell'app già installata.
Capire i canali di aggiornamento
Il canali di aggiornamento sono come Capgo si rivolgono gli aggiornamenti a specifiche costruzioni. Ogni costruzione è associata a un canale, e quel canale determina quali aggiornamenti riceverà.
Ad esempio, puoi pubblicare aggiornamenti in un preview canale senza influenzare gli utenti su production. In passato, cambiare canale richiedeva l'installazione di una versione nativa diversa o la modifica manuale delle assegnazioni dei dispositivi attraverso il pannello di controllo.
Il canali in Capgo ti consentono di:
- Target specifiche fasce di utenti con funzionalità diverse
- Eseguire test A/B assegnando gli utenti a canali diversi
- Rilasciare gradualmente nuove funzionalità
- Crea programmi di testing beta
- Risolve gli issue di debug in produzione con gli utenti singoli
Se non sei familiare con i canali di aggiornamento, il Capgo documentazione sui canali di aggiornamento ne copre i dettagli in modo più approfondito.
Cosa è 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 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 una production build a, ad esempio, un preview canale, provare le ultime modifiche. Quando sono finiti i test, cambiano di nuovo a production nuovamente. Non è necessario reinstallare o creare un build di anteprima separato.
Sotto la copertura, il Channel Surfing funziona permettendo all'app di dire al client di aggiornamento quale canale utilizzare. Quella scelta può essere cambiata in esecuzione e rimane in vigore fino a quando non viene eliminata o sostituita.
How to Implement Channel Surfing
Prima di poter provare il channel surfing, il tuo progetto deve essere configurato con Capgo Live Updates. Per impostare questo, segui il Capgo quickstart guide.
L'unica configurazione richiesta per il channel surfing è l'abilitazione di “Consenti ai dispositivi di associarsi da soli” su ogni canale che desideri passare a in Capgo dashboard. Non sono necessarie code modifiche o modifiche di configurazione oltre a quella.
Innanzitutto, il channel surfing è guidato da una sola API chiamata:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
Questo imposta il canale che viene utilizzato quando si query Capgo per aggiornamenti. Sapere di più sul setChannel API.
Channel Switching istantaneo (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 (solo lettura): Viene inviata una richiesta al backend Capgo per validare il canale consentito
- Aggiornamento dello storage locale: Se la validazione passa, il canale viene salvato nello storage locale del dispositivo
- Effetto immediato: La prossima verifica degli aggiornamenti utilizza il nuovo canale immediatamente
In precedenza, setChannel() aveva salvato l'override del canale nel database backend (come Dashboard o API modifiche). I dispositivi dovevano attendere la riproduzione 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.
Ciclo di scelta del canale completo
Per una migliore esperienza utente, desidererai spesso fare di più che solo cambiare il canale e attendere la prossima riavvio dell'app. Un approccio comune è quello di verificare immediatamente gli aggiornamenti, scaricarli se disponibili e ricaricare l'app per far sì che l'utente atterri direttamente sul canale selezionato con le sue aggiornamenti.
Un flusso tipico assomiglia a questo:
- Cambia il canale (
setChannel) - Controlla l'aggiornamento (
getLatest) - Esegui l'aggiornamento (
download,setonext) - Ricarica 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');
La struttura di questo flusso è a tua scelta. Potresti suddividere questi passaggi in più interazioni o eseguirli tutti contemporaneamente. Indipendentemente da come strutturi il flusso, assicurati di tenere conto degli errori. Problemi di rete o un canale non valido possono impedire di applicare l'aggiornamento.
La Unica Richiesta: Abilita l'Assegnazione Auto
Questo è l'unica cosa che devi fare per abilitare il canale surfing. Prima che la tua app possa passare a un canale utilizzando setChannel(), devi abilitare l'assegnazione auto per quel canale nel dashboard Capgo:
- Vai al Canali Sezione nel tuo Capgo dashboard
- Clicca sul nome del canale che desideri gestire
- Abilita “Consenti ai dispositivi di associarsi automaticamente”
- Salva le modifiche

Ecco fatto. Nessuna modifica di configurazione è necessaria nell'app. Nessuna impostazione è richiesta. Basta abilitare l'autoassegnazione sui canali che desideri che gli utenti possano cambiare. defaultChannel Se questa impostazione è disabilitata, qualsiasi tentativo di chiamata con questo canale fallirà e l'evento si attiverà.
Elenco dei canali disponibili setChannel() If this setting is disabled, any attempt to call with this channel will fail and the event will fire. channelPrivate If this setting is disabled, any attempt to call with this channel will fail and the event will fire.
If this setting is disabled, any attempt to call with this channel will fail and the event will fire.
Puoi 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.
Ottenere il Canale Attuale
Controlla quale canale il dispositivo è attualmente assegnato:
const { channel } = await CapacitorUpdater.getChannel();
console.log('Current channel:', channel);
Ritornare al Canale Predefinito
Per rimuovere l'override del canale e tornare al predefinito:
await CapacitorUpdater.unsetChannel({});
Questo disconnette il dispositivo da qualsiasi canale assegnato specificamente, causando il ritorno al defaultChannel nel tuo config o il cloud predefinito.
Come Testare il Surfing dei Canali
Per vedere il surfing dei canali in azione, avrai bisogno di un build di rilascio - il @capgo/capacitor-updater API è progettato per i build di rilascio. In build di debug, l'app carica tipicamente JavaScript da un server di sviluppo al posto che, il che bypassa il normale flusso di aggiornamento.
Requisiti Preliminari
The unica richiesta per la navigazione tra canali è abilitare “Consenti ai dispositivi di associarsi da soli” su ogni canale che desideri consentire di cambiare. Non sono necessarie modifiche di configurazione nell'app.
Creazione di una versione di prova
Costruisci l'app come di consueto:
bun run build && npx cap sync
Poi crea le versioni native utilizzando Xcode o Android Studio, o utilizza il tuo pipeline CI/CD. L'app inizierà sul canale che è stato impostato come default cloud nel tuo Capgo dashboard.
Pubblicazione di Aggiornamenti su Canali diversi
Una volta installata l'app, pubblica aggiornamenti su 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
Dal lì, naviga nella tua interfaccia di navigazione tra canali nell'app e attiva il cambio canale. L'app dovrebbe recuperare l'aggiornamento dal canale selezionato e ricaricare nella nuova versione.
Creazione di un'interfaccia per il cambio canale
La navigazione tra canali è di solito qualcosa che desideri esporre a un limitato numero di utenti, non a tutti gli utenti che utilizzano l'app. Ad esempio, potresti avere un pulsante disponibile solo per gli impiegati autenticati che cambia l'app sul canale di anteprima.
Ecco un esempio di componente React per un cambio canale:
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: cose da sapere
Queste non sono specifiche del navigazione tra canali, ma tendono a diventare evidenti rapidamente una volta che iniziate a cambiare canali in esecuzione.
Discrepanze tra versioni di runtime
Gli aggiornamenti in Capgo sono legati alle versioni native dell'app. Se la versione nativa di un aggiornamento non corrisponde alla versione nativa dell'app installata, l'aggiornamento non verrà scaricato o applicato. Quando si naviga tra canali, questo si manifesta tipicamente con l'app che cambia canali ma non viene applicato alcun aggiornamento, anche se ne esiste uno su quel canale.
Questo significa di solito che l'aggiornamento è stato pubblicato da una versione nativa diversa dell'app. Assicuratevi che il pacchetto del canale sia compatibile con la versione nativa installata sul dispositivo.
Eliminazione o Annullamento degli Aggiornamenti
Se un'app ha già scaricato un aggiornamento per un canale, cancellando quell'aggiornamento dalla dashboard di Capgo non lo elimina dai dispositivi che già lo hanno. La cancellazione si limita a future download.
La maniera più affidabile per annullare un aggiornamento dannoso è pubblicare un aggiornamento noto come buono sullo stesso canale. Ciò 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 sull'aggiornamento incorporato nel build.
Considerazioni per la migrazione dei dati
Switchando canali cambia il pacchetto JavaScript che l'applicazione esegue. Se l'applicazione dipende da migrazioni o forme dati che non sono compatibili tra i 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 comprendere 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 la Iterazione Mobile
Il surfing dei canali è particolarmente utile quando si ha bisogno di esaminare rapidamente le modifiche in un ambiente di produzione.
Validazione Rapida
Immagina un bug da correggere urgentemente che richiede una validazione prima di essere distribuito ampiamente. Con il surfing dei canali, la modifica può essere isolata a un piccolo gruppo di utenti designati che possono esaminarla prima che raggiunga la produzione.
Recensione da parte degli Stakeholder
Un proprietario di prodotto o un QA può passare la sua installazione di produzione a un altro canale di aggiornamento, verificare il bug o la funzionalità e poi tornare nuovamente una volta terminato.
Test Streamline
Questo rende più facile coinvolgere gli stakeholder non tecnici nella recensione e nella decisione, mantenendo il workflow fluido. Un unico build di produzione diventa uno strumento flessibile per il testing, la feedback e la validazione.
Uso dei Caso
- Test di QA: Passa la QA team tra le branch di feature
- Programmi Beta: Gli utenti si iscrivono al canale beta per l'accesso anticipato
- Valutazione da parte degli stakeholder: I proprietari dei prodotti visualizzano le modifiche prima della release
- Sperimentazione A/B: Assegna gli utenti a canali diversi per gli esperimenti
- Debugging: Passa un utente specifico a un canale di debug per diagnosticare gli issue
Confronto: Metodi di Modifica dei Canali
| Metodo | Tempo di Effetto | Salvati dove | Utilizzo |
|---|---|---|---|
setChannel() da plugin |
Subito | Solo dispositivo (locale) | Passaggio del canale inizializzato dall'utente all'interno dell'app |
| Dashboard sovrascrittura dispositivo | Fino a 2 min | Database backend | Modifiche iniziate dall'amministratore per dispositivi specifici |
| API assegnazione del canale | Fino a 2 min | Database di backend | Integrazioni di backend automatizzate |
Per l'esperienza utente migliore quando si costruiscono UI per il cambio di canale, utilizzare sempre il metodo del plugin. setChannel() Metodo.
Pratiche Consigliate
- Limitare l'accesso: Il surf dei canali è solitamente per uso interno - non esporlo a tutti gli utenti
- Gestire gli errori: Gestire sempre gli errori con grazia quando si cambia canale
- Verificare la compatibilità: Assicurarsi che gli aggiornamenti sui diversi canali siano compatibili con la versione nativa installata
- Documentare i canali: Mantieni una documentazione chiara su cosa ogni canale è destinato a fare
- Monitoraggio dell'uso: Traccia quali dispositivi sono su quali canali per il debug
Risorse
- Capgo Aggiornamenti in tempo reale Documentazione
- Documentazione dei canali
- Riferimento al plugin API
- Capgo CLI Comandi
Conclusioni
La navigazione tra canali trasforma la tua applicazione Capacitor in un'esperienza di iterazione più flessibile. Invece di considerare i build di produzione come endpoint fissi, diventano strumenti flessibili per il testing, la validazione e l'iterazione rapida.
Con l'introduzione recente del cambio di canale istantaneo nelle versioni del plugin, l'esperienza è ora senza soluzione di continuità - gli utenti possono passare da un canale all'altro e ricevere immediatamente gli aggiornamenti dal nuovo canale senza alcun periodo di attesa.
Sia che stai validando le correzioni di bug con gli stakeholder, esegui programmi beta, o debuggi problemi con gli utenti specifici, la navigazione tra canali ti dà la flessibilità di inviare l'aggiornamento giusto all'utente giusto al momento giusto.
Continua da Channel Surfing per Capgo: Come cambiare canali di aggiornamento in esecuzione
Se stai utilizzando Channel Surfing per Capgo: Come cambiare canali di aggiornamento in esecuzione per pianificare la routing dei canali e la distribuzione in fase di staging, connettilo con Canali per i dettagli di implementazione in Canali, Canali per i dettagli di implementazione in Canali, Canali per i dettagli di implementazione in Canali, Soluzione di Test Beta per il flusso di lavoro del prodotto in Soluzione di Test Beta, e Soluzione di Targeting della Versione per il flusso di lavoro del prodotto nella Soluzione di Targeting della Versione.