Haben Sie sich schon einmal gewünscht, eine Änderung direkt an einen bestimmten Benutzer zu liefern, damit er sie sofort überprüfen und Feedback geben kann - ohne ihn dazu auffordern, eine neue Version von TestFlight oder Google Play herunterzuladen und zu installieren?
Ich hatte Kunden, die Anfragen stellten, die ich schnell umsetzen konnte, aber das Einbringen der Ergebnisse in ihre Hände, um sie zu validieren, bedeutete, eine Aktualisierung an alle Benutzer zu versenden (risikant für einen experimentellen Änderung) oder eine einstellige Version speziell für den Kunden zu erstellen (ein Aufwand für beide).
Was fehlte war Flexibilität. Entwickler wollten verschiedene Updates an verschiedene Gruppen von Benutzern liefern, wie z.B. nicht-technische Stakeholder, QA oder die gesamte Benutzerbasis, wenn es angebracht ist.
Es gab keine Möglichkeit, eine Produktionsversion in eine Arbeitsversion umzuschalten, Feedback zu sammeln und dann wieder in die Produktionsversion zurückzukehren.
Das ist das, was Fernsehen ermöglicht. Eine auf einem Gerät installierte App kann das Updatekanal wechseln, wenn sie läuft, und damit eine Produktions-App in einen flexiblen Raum für die Überprüfung und Iteration verwandelt, anstatt ein fester Punkt zu sein. Dies ist besonders nützlich für nicht-technische Stakeholder, die mit Produktions-Apps arbeiten, da sie so Änderungen testen und direkt in der App geben können, die sie bereits installiert haben.
Updatekanäle verstehen
Updatekanäle sind die Art und Weise, wie Capgo Ziele für Updates zu bestimmten Builds setzt. Jedes Build ist mit einem Kanal verbunden, und dieser Kanal bestimmt, welche Updates es erhalten wird.
Beispielsweise können Sie Updates in einem preview Kanal veröffentlichen, ohne die Benutzer auf production zu beeinflussen. In der Vergangenheit war es notwendig, ein anderes natives Build zu installieren oder die Gerätezuweisungen manuell über das Dashboard zu ändern.
Kanäle in Capgo ermöglichen Ihnen:
- Spezifische Benutzergruppen mit verschiedenen Funktionen zu targeten
- A/B-Tests durch die Zuweisung von Benutzern zu verschiedenen Kanälen durchzuführen
- Neue Funktionen allmählich zu rollen
- Beta-Test-Programme erstellen
- Produktionsprobleme mit einzelnen Benutzern debuggen
Wenn Sie sich nicht mit Update-Kanälen auskennen, Capgo enthält detailliertere Informationen zu den Kanälen. Was ist Channel-Surfing?
Channel-Surfing ermöglicht es einer installierten App, von verschiedenen Update-Strömen zu pullen, ohne neu installiert zu werden. Eine installierte App kann die Update-Kanäle bei Laufzeit wechseln und wird weiterhin Updates vom neu ausgewählten Kanal erhalten, bis die App uninstalliert oder auf einen anderen Kanal umgestellt wird.
In der Praxis bedeutet dies, dass ein Produktbesitzer oder QA-Tester ein
Build auf ein production Kanal umschalten kann, um die neuesten Änderungen auszuprobieren. Wenn sie mit den Tests fertig sind, wechseln sie wieder auf preview . Eine Neuinstallation oder ein separates Preview-Build sind nicht erforderlich. production Unter der Haube funktioniert Channel-Surfing dadurch, dass die App dem Updates-Client mitteilt, welchen Kanal verwenden soll. Diese Wahl kann bei Laufzeit geändert und bleibt bis zur Löschung oder Ersetzung gültig.
__CAPGO_KEEP_0__
How Implementieren Sie Channel Surfing
Bevor Sie Channel Surfing ausprobieren können, muss Ihr Projekt mit Capgo Live Updates konfiguriert werden. Um das aufzusetzen, folgen Sie bitte der Capgo Schnellstartanleitung.
Für Channel Surfing ist nur die Aktivierung der „Zugriff auf Geräte zulassen“-Funktion auf jedem Kanal, den Sie wechseln möchten, im Capgo Dashboard erforderlich. Keine code Änderungen oder Konfigurationsanpassungen erforderlich.
Im Kern wird Channel Surfing von einer einzelnen API-Aufruf angetrieben:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
Dies setzt den Kanal fest, der verwendet wird, wenn Capgo für Updates abgefragt wird. Erhalten Sie weitere Informationen zur setChannel API.
Instant Channel Switching (v5.34.0+)
Ab der Plugin-Version 5.34.0, 6.34.0, 7.34.0 oder 8.0.0 (abhängig von Ihrer Hauptversion) setChannel() arbeiten anders und viel schneller:
- Hintergrundvalidierung (lesend): Ein Anfrage wird an den Capgo-Backend gesendet, um zu überprüfen, ob der Kanal erlaubt ist
- Speicherung in der lokalen Speicherung: Wenn die Validierung erfolgreich ist, wird der Kanal auf dem Gerät in der lokalen Speicherung gespeichert
- Instantane Effekt: Die nächste Aktualisierungskontrolle verwendet den neuen Kanal sofort
Zuvor setChannel() hatte der Kanal-Übertrag gespeichert, um den Backend-Datenbank (wie Dashboard oder API-Änderungen) zu speichern. Die Geräte mussten auf die Backend-Replikation (bis zu 2 Minuten) warten, bevor der neue Kanal anerkannt wurde. Das neue Verhalten liest nur von dem Backend (für die Validierung) und speichert lokal, was den Kanalwechsel sofort macht.
Vollständiger Kanalwechsel-Flow
Für eine bessere Benutzererfahrung möchten Sie normalerweise mehr tun als nur den Kanal wechseln und auf den nächsten App-Neustart warten. Eine gängige Vorgehensweise besteht darin, sofort nachzufragen, ob Updates verfügbar sind, sie herunterzuladen, wenn verfügbar, und die App neu zu laden, damit der Benutzer direkt auf dem ausgewählten Kanal landet.
Ein typischer Flow sieht wie folgt aus:
- Den Kanal ändern (
setChannel) - Überprüfen Sie, ob ein Update verfügbar ist (
getLatest) - Laden und anwenden Sie das Update (
download,setodernext) - Laden Sie die App neu, wenn erforderlich (
reload)
Hier ist ein vollständiges Beispiel:
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');
Wie Sie diese Flussstruktur gestalten, ist Ihnen überlassen. Sie können diese Schritte über mehrere Interaktionen aufteilen oder sie alle auf einmal ausführen. Unabhängig davon, wie Sie die Flussstruktur gestalten, stellen Sie sicher, dass Sie auf Fehler achten. Netzwerkprobleme oder ein ungültiger Kanal können alle eine Anwendung von einem Update verhindern.
Die einzige Anforderung: Selbstzuweisung aktivieren
Dies ist die einzige Sache, die Sie tun müssen, um das Kanalsurfen zu aktivieren. Bevor Ihre App auf einen Kanal wechseln kann, der über setChannel(), müssen Sie die Selbstzuweisung für diesen Kanal im Capgo-Dashboard aktivieren:
- Gehen Sie zur Kanäle Abschnitt in Ihrem Capgo-Dashboard
- Klicken Sie auf den Kanalnamen, den Sie verwalten möchten
- Aktivieren “Zulassen, dass Geräte sich selbst zuordnen”
- Die Änderungen speichern

Das ist alles. Keine Konfigurationsänderungen erforderlich in Ihrer App. Keine defaultChannel Einstellung erforderlich. Aktivieren Sie einfach die Selbstzuordnung auf den Kanälen, auf die Benutzer wechseln sollen.
Wenn diese Einstellung deaktiviert ist, versagen alle Versuche, setChannel() mit diesem Kanal aufzurufen und das channelPrivate Ereignis wird ausgelöst.
Verfügbare Kanäle auflisten
Sie können die Liste der verfügbaren Kanäle für Selbstzuweisung abrufen:
const { channels } = await CapacitorUpdater.listChannels();
console.log('Available channels:', channels.map(c => c.name));
// Use this to build a channel selector UI
Dies gibt nur Kanäle zurück, bei denen die Selbstzuweisung aktiviert ist.
Aktueller Kanal abrufen
Überprüfen Sie, welcher Kanal derzeit dem Gerät zugewiesen ist:
const { channel } = await CapacitorUpdater.getChannel();
console.log('Current channel:', channel);
Zurücksetzen auf Standardkanal
Um den Kanal-Übertrag zu entfernen und auf den Standard zurückzukehren:
await CapacitorUpdater.unsetChannel({});
Dies löst das Gerät von einem speziell zugewiesenen Kanal frei, sodass es auf den defaultChannel in Ihrer Konfiguration oder im Cloud-Standard fällt.
Kanal-Surfen testen
Um das Kanal-Surfen in Aktion zu sehen, benötigen Sie eine Release-Build - die @capgo/capacitor-updater API ist für Release-Builds konzipiert. In Debug-Builds lädt die App typischerweise JavaScript von einem Entwicklungsserver ab, was den normalen Update-Flow umgeht.
Voraussetzungen
Die einzige Anforderung für das Channel-Surfen ist die Aktivierung von “Zulassen, dass Geräte sich selbst assoziieren” auf jedem Kanal, den Sie für das Umstellen zulassen möchten. Keine Konfigurationsänderungen sind in Ihrer App erforderlich.
Erstellung einer Testversion
Bauen Sie Ihre App wie gewohnt:
bun run build && npx cap sync
Dann erstellen Sie Ihre native Builds mit Xcode oder Android Studio, oder verwenden Sie Ihre CI/CD-Pipeline. Die App wird auf dem Kanal starten, der als Cloud-Standard in Ihrem Capgo-Dashboard eingestellt ist.
Veröffentlichung von Updates auf verschiedenen Kanälen
Einmal die App installiert, veröffentlichen Sie Updates auf verschiedenen Kanälen:
# Publish to preview channel
npx @capgo/cli@latest bundle upload --channel preview
# Publish to production channel
npx @capgo/cli@latest bundle upload --channel production
Von dort aus navigieren Sie zu Ihrer Channel-Surfing-UI in der App und lösen den Kanalwechsel aus. Die App sollte die Aktualisierung vom ausgewählten Kanal herunterladen und in die neue Version neu laden.
Erstellung eines Channel-Switcher-UI
Channel-Surfen ist normalerweise etwas, das Sie nur einer begrenzten Gruppe von Benutzern zugänglich machen möchten, nicht allen Benutzern Ihrer App. Zum Beispiel haben Sie möglicherweise einen Button, der nur für autorisierte Mitarbeiter verfügbar ist, der die App auf den Vorschaukanal umschaltet.
Hier ist ein Beispiel für eine React-Komponente für einen Channel-Switcher:
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>
);
}
OTA-Update-Hinweise
Keine dieser sind spezifisch für das Wechseln von Kanälen, aber sie werden schnell sichtbar, sobald Sie mit dem Wechseln von Kanälen während der Laufzeit beginnen.
Laufzeit-Versionen stimmen nicht überein
Updates in Capgo sind an native App-Versionen gebunden. Wenn die native Version einer Aktualisierung nicht mit der native Version der installierten App übereinstimmt, wird die Aktualisierung nicht heruntergeladen oder angewendet. Wenn Sie beim Wechseln von Kanälen dieses Problem beobachten, zeigt sich dies typischerweise darin, dass die App die Kanäle wechselt, aber keine Aktualisierung angewendet wird, obwohl eine auf diesem Kanal existiert.
Dies bedeutet in der Regel, dass die Aktualisierung von einer anderen native Version der App veröffentlicht wurde. Stellen Sie sicher, dass der Kanal-Bundle mit der native Version kompatibel ist, die auf dem Gerät installiert ist.
Entfernen oder Rückschaltung von Updates
Wenn eine App bereits ein Update für einen Kanal heruntergeladen hat, entfernt die Deletion eines Updates aus dem Capgo-Dashboard nicht die bereits heruntergeladenen Versionen von Geräten. Die Deletion stoppt nur zukünftige Downloads. Die zuverlässigste Methode, um ein schlechtes Update rückgängig zu machen, ist die Veröffentlichung eines bekannten guten Updates auf demselben Kanal. Dies erstellt ein neues Update an der Spitze der Kanal-Geschichte, das Clients als neueste Version behandeln und anstelle des alten Updates anwenden. __CAPGO_KEEP_0__ bietet auch eine Rückschaltmechanik, die Clients anweist, eine vorherige stabile Aktualisierung erneut anzuwenden oder auf die in der Veröffentlichung eingebaute Aktualisierung zurückzufallen.
Überlegungen zur Datenmigration
Capgo
__CAPGO_KEEP_0__
Das Wechseln von Kanälen ändert das JavaScript-Bundle, das die App ausführt. Wenn Ihre App auf Migrationen oder Datenformen angewiesen ist, die nicht über Kanäle kompatibel sind, kann das Wechseln hin und her Probleme verursachen.
Beispielsweise könnte eine Beta-Update eine Datenbankmigration anwenden, die die Produktionsversion nicht versteht. Entwickler sollten sicherstellen, dass ihre Updates sicher sind, um zwischen ihnen hin und her zu wechseln, oder wenn nötig, nur in eine Richtung.
Wie Channel-Surfing die mobile Iteration verbessert
Channel-Surfing ist besonders nützlich, wenn Sie schnell Änderungen in einer Produktionsumgebung überprüfen müssen.
Schnelle Validierung
Bilden Sie sich vorstellen, dass ein dringender Bug-Fix eine Validierung benötigt, bevor er weit verbreitet wird. Mit Channel-Surfing kann die Änderung auf einen kleinen Satz von beauftragten Benutzern isoliert werden, die sie vorher überprüfen können, bevor sie in die Produktionsumgebung gelangen.
Stakeholder-Überprüfung
Ein Produktbesitzer oder QA-Experte kann seine installierte Produktionsversion auf einen anderen Update-Kanal umschalten, die Änderung oder Funktion überprüfen und dann wieder zurück umschalten, sobald er fertig ist.
Optimierte Tests
Dies erleichtert es, nicht-technische Stakeholder in die Überprüfung und Entscheidungsfindung einzubeziehen, während der Workflow reibungslos bleibt. Ein einzelnes Produktionsbuild wird zu einem flexiblen Werkzeug für Tests, Feedback und Validierung.
Anwendungsbereiche
- Qualitätsprüfungen: Lassen Sie die QA-Team zwischen Featurezweigen wechseln
- Testprogramme: Benutzer wählen sich für die Beta-Kanal für frühe Zugriff ein
- Überprüfung durch Stakeholder: Produktbesitzer präsentieren sich Änderungen vor der Veröffentlichung
- A/B-Test: Zuweisen von Benutzern zu verschiedenen Kanälen für Experimente
- Fehlersuche: Wechseln Sie einen bestimmten Benutzer in einen Debug-Kanal, um Probleme zu diagnostizieren
Vergleich: Kanalwechselmethoden
| Methode | Effektzeit | Gedächtnisort | Verwendungsfall |
|---|---|---|---|
setChannel() aus Plugin |
Sofort | Gerät nur (lokal) | Benutzerinitiierte Wechsel der Kanäle innerhalb der App |
| Überwachungsgerät-Übertragung | Bis zu 2 min | Hintergrund-Datenbank | Admin-gesteuerte Änderungen für bestimmte Geräte |
| API Kanalzuweisung | Bis zu 2 min | Hintergrund-Datenbank | Automatisierte Backend-Integrationen |
Für die beste Benutzererfahrung beim Erstellen von UIs, die zwischen Kanälen wechseln, verwenden Sie immer die Methode des Plugins. setChannel() Methode.
Gute Praktiken
- Zugriff einschränken: Kanalsurfen ist normalerweise für den internen Gebrauch gedacht - vermeiden Sie es, es allen Benutzern zugänglich zu machen
- Fehler behandeln: Behandeln Sie Fehler immer freundlich, wenn Sie zwischen Kanälen wechseln
- Kompatibilität überprüfen: Stellen Sie sicher, dass Updates auf verschiedenen Kanälen mit der installierten nativen Version kompatibel sind
- Kanäle dokumentieren: Dokumentieren Sie die Aufgaben jeder Kanalinstanz klar.
- Überwachung der Nutzung: Verfolgen Sie, welche Geräte auf welchen Kanälen für die Debugging-Überprüfung verwendet werden.
Ressourcen
Zusammenfassung
Das Kanalwechseln verändert, wie Sie Ihre Capacitor-Anwendung iterieren können. Anstatt Produktionsbuilds als feste Endpunkte zu behandeln, werden sie zu flexiblen Werkzeugen für die Testung, Validierung und schnelle Iteration.
Mit der Einführung des sofortigen Kanalwechsels in den letzten Plugin-Versionen ist die Erfahrung jetzt reibungslos - Benutzer können Kanäle wechseln und erhalten sofort Updates vom neuen Kanal ohne Wartezeit.
Ob Sie Bug-Fixes mit Stakeholdern validieren, Beta-Programme durchführen oder Probleme bei bestimmten Benutzern debuggen, bietet das Kanalwechseln Ihnen die Flexibilität, das richtige Update an den richtigen Benutzer zur richtigen Zeit abzusenden.
Bleiben Sie bei Channel Surfing für Capgo: Wie Sie Update-Kanäle im Laufenden wechseln können
Wenn Sie "Channel Surfing for __CAPGO_KEEP_0__: Wie Sie Update-Kanäle im Laufenden wechseln können" verwenden Channel Surfing for Capgo: How to Switch Update Channels at Runtime Kanäle für die Implementierungsdetails in Kanäle, Kanäle für die Implementierungsdetails in Kanäle, Kanäle für die Implementierungsdetails in Kanäle, Lösung für Beta-Tests für den Produktworkflow in Lösung für Beta-Tests Beta Testing Solution Versionziel-Lösung für den Produktworkflow in Versionziel-Lösung.