Hai mai desiderato 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 una modifica sperimentale) o creare un build personalizzato per il cliente (un fastidio per entrambi).
Quello che mancava era la 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.
There non c'era una via per un build di produzione per passare a una versione in corso di sviluppo, raccogliere feedback e poi tornare alla produzione.
Quello che il "cambio canale" abilita. 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 arrivo fissato. Ciò è 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 che già hanno installata.
Capire i Canali di Aggiornamento
Il canale di aggiornamento è il modo in cui Capgo si rivolge agli aggiornamenti per specifiche build. Ogni build è associato a un canale, e quel canale determina quali aggiornamenti riceverà.
Ad esempio, puoi pubblicare aggiornamenti su un preview canale senza influenzare gli utenti su production. In passato, cambiare canali richiedeva l'installazione di una build nativa diversa o la modifica manuale delle assegnazioni dei dispositivi tramite il pannello di controllo.
I 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 progressivamente nuove funzionalità
- Creare programmi di testing beta
- Debuggare problemi di produzione con utenti individuali
Se non sei familiare con i canali di aggiornamento, il Capgo documento sui canali di aggiornamento ne copre i dettagli in modo più approfondito.
Cos'è 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 preview canale, provare le ultime modifiche. Quando hanno finito di testare, cambiano di nuovo a production nuovamente. Non è necessario reinstallare o creare un build di anteprima separato.
Al di sotto della cappa, la navigazione tra canali funziona permettendo 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 eliminata o sostituita.
Come implementare la navigazione tra canali
Prima di poter provare la navigazione tra canali, il tuo progetto deve essere configurato con Capgo Aggiornamenti in Tempo Reale. Per configurarlo, segui il guida di avvio rapido Capgo.
L'unica configurazione richiesta per la navigazione tra canali è l'abilitazione di "Consenti ai dispositivi di associarsi da soli" su ogni canale che desideri passare in Capgo dashboard. Senza alcuna modifica o configurazione code oltre a quella.
Al suo nucleo, la navigazione tra canali è guidata da un singolo API chiamata:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
Questo imposta il canale utilizzato quando si query Capgo per aggiornamenti. Sappi di più sul setChannel API.
Switching dei canali istantaneo (v5.34.0+)
Partendo 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ù velocemente:
- Validazione del backend (solo lettura): Viene inviata una richiesta al backend Capgo 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 immediato: La prossima verifica degli aggiornamenti utilizza il nuovo canale immediatamente
In precedenza, setChannel() aveva salvato l'override del canale nel database del 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 dei canali istantanee.
Flusso di completamento del canale
Per una migliore esperienza utente, è consigliabile di solito fare di più che solo cambiare il canale e attendere il prossimo 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 sull'aggiornamento del canale selezionato.
Un flusso tipico assomiglia a questo:
- Cambia il canale (
setChannel) - Controlla l'aggiornamento (
getLatest) - Esegui l'aggiornamento (
download,setonext) - Ricarica l'applicazione 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 alla volta. In ogni caso, assicurati di tenere conto degli errori. Problemi di rete o un canale non valido possono impedire l'applicazione dell'aggiornamento.
L'Unico Requisito: 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()deve abilitare l'assegnazione auto per quel canale nel dashboard Capgo:
- Vai al Canali Sezione del tuo pannello Capgo
- Clicca sul nome del canale che desideri gestire
- Abilita “Consenti ai dispositivi di associarsi automaticamente”
- Salva le modifiche

Ecco. Nessuna modifica di configurazione è necessaria nel tuo app. Nessuna impostazione è richiesta. Basta abilitare l'autoassegnazione sui canali che desideri che gli utenti possano utilizzare. defaultChannel Se questa impostazione è disabilitata, qualsiasi tentativo di chiamata con questo canale fallirà e l'evento si attiverà.
Se questa impostazione è disabilitata, qualsiasi tentativo di chiamata con questo canale fallirà e l'evento si attiverà. setChannel() Se questa impostazione è disabilitata, qualsiasi tentativo di chiamata con questo canale fallirà e l'evento si attiverà. channelPrivate Se questa impostazione è disabilitata, qualsiasi tentativo di chiamata con questo canale fallirà e l'evento si attiverà.
Elenco dei canali disponibili
Puoi estrarre l'elenco dei canali disponibili per l'auto-assegnazione:
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'auto-assegnazione è abilitata.
Ottieni il canale corrente
Controlla quale canale il dispositivo è attualmente assegnato:
const { channel } = await CapacitorUpdater.getChannel();
console.log('Current channel:', channel);
Ritorna 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, causandolo a cadere nuovamente sul defaultChannel nel tuo config o il canale predefinito del cloud.
Come testare la navigazione tra canali
Per vedere la navigazione tra canali in azione, avrai bisogno di un rilascio - il @capgo/capacitor-updater API è progettato per i rilasci. In costruzioni di debug, l'app carica tipicamente JavaScript da un server di sviluppo, il che bypassa il normale flusso di aggiornamento.
Requisiti preliminari
L'unica richiesta per la navigazione tra canali è l'abilitazione “Consenti ai dispositivi di associarsi da soli” su ogni canale che desideri consentire di accedere. Non sono necessarie modifiche di configurazione nell'applicazione.
Creazione di una versione di prova
Costruisci l'applicazione 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'applicazione si avvierà sul canale che è stato impostato come cloud predefinito nel tuo Capgo dashboard.
Pubblicazione di Aggiornamenti su Canali diversi
Una volta installata l'applicazione, 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 menu principale, naviga alla tua interfaccia di navigazione tra canali nell'applicazione e attiva il cambio canale. L'applicazione dovrebbe recuperare l'aggiornamento dal canale selezionato e ricaricare con l'aggiornamento nuovo.
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'applicazione. Ad esempio, potresti avere un pulsante disponibile solo per gli impiegati autenticati che cambia l'applicazione sul canale di anteprima.
Ecco un esempio di componente React per un commutatore di 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: trappole
Nessuno di questi è specifico per la navigazione tra canali, ma tendono a diventare evidenti rapidamente non appena iniziate a cambiare canali in esecuzione.
Incompatibilità di versione in esecuzione
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 come l'app che cambia canali ma non viene applicato alcun aggiornamento, anche se ne esiste uno su quel canale.
Questo significa generalmente che l'aggiornamento è stato pubblicato da una versione nativa diversa dell'app. Assicurarsi 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, cancellare quell'aggiornamento dal dashboard di Capgo non lo elimina dai dispositivi che già lo hanno. La cancellazione si limita a future download futuri.
Il modo più affidabile per annullare un aggiornamento dannoso è pubblicare un aggiornamento noto e 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 all'aggiornamento incorporato nel build.
Considerazioni sulla migrazione dei dati
Switching i canali cambia il bundle JavaScript con cui l'applicazione esegue. Se l'applicazione dipende da migrazioni o forme dei dati che non sono compatibili tra i canali, passare avanti e indietro potrebbe 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 i canali o limitare il passaggio a una sola direzione quando necessario.
Perché il Channel Surfing Migliora l'Iterazione Mobile
Il channel surfing è particolarmente utile quando si ha bisogno di esaminare le modifiche velocemente in un ambiente di produzione.
Validazione Rapida
Immagina un bug da correggere urgentemente che richiede una validazione prima di essere distribuito ampiamente. Con il channel surfing, 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 possono passare la loro installazione di produzione a un altro canale di aggiornamento, verificare il bug o la funzionalità e poi passare di nuovo una volta che sono finiti.
Test Streamline
Questo rende più facile coinvolgere gli stakeholder non tecnici nella revisione e nella decisione, mentre mantiene il workflow fluido. Una sola installazione di produzione diventa uno strumento flessibile per il testing, la feedback e la validazione.
Utilizzo
- Test di Qualità: Lascia che il team QA passi tra le branch di feature
- Programmi Beta: Gli utenti si iscrivono al canale beta per l'accesso anticipato
- Revisione dei Stakeholder: I proprietari dei prodotti visualizzano le modifiche prima della release
- Test 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 del Canale
| Metodo | Tempo di effetto | Dove viene persistito | Caso d'uso |
|---|---|---|---|
setChannel() da plugin | Instanziale | Solo dispositivo (locale) | Switching del canale inizializzato dall'utente all'interno dell'app |
| Dashboard di override del dispositivo | Fino a 2 min | Database del backend | Modifiche inizializzate dall'amministratore per dispositivi specifici |
| API assegnazione del canale | Fino a 2 min | Database del backend | Integrazioni di backend automatizzate |
Per ottenere il miglior esperienza utente quando si costruisce UI di cambio canale, utilizzare sempre il metodo del plugin. setChannel() Metodo.
Pratiche Raccomandate
- Limitare l'accesso: La navigazione tra canali è generalmente destinata all'uso interno - non esporla a tutti gli utenti
- Gestire gli errori: Gestire sempre gli errori con grazia quando si cambia canale
- Verificare la compatibilità: Assicurarsi che gli aggiornamenti su diversi canali siano compatibili con la versione nativa installata
- Canali Documentazione: 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 sui canali
- Riferimento Plugin API
- Capgo CLI Comandi
Conclusioni
La navigazione tra canali trasforma la tua app Capacitor in un'esperienza di iterazione rapida. 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 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 i riparazioni di bug con gli stakeholder, eseguendo programmi beta, o debuggando problemi con gli utenti specifici, la navigazione tra canali ti dà la flessibilità di inviare l'aggiornamento giusto all'utente giusto al momento giusto.