Haben Sie sich schon einmal gewünscht, eine Änderung direkt an einen bestimmten Benutzer zu versenden, 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 Ergebnis in ihre Hände zu geben, um es zu validieren, bedeutete, eine Aktualisierung an alle Benutzer zu versenden (risikant für einen experimentellen Änderung) oder eine Einstellungsanwendung für den Kunden zu erstellen (ein Aufwand für beide).
Was fehlte war Flexibilität. Entwickler wollten verschiedene Updates an verschiedene Benutzergruppen liefern, wie z.B. nicht-technische Stakeholder, QA oder die gesamte Benutzerbasis, wenn dies angemessen war.
Es gab keine Möglichkeit, eine Produktionsversion in eine Wartungsversion umzuschalten, Feedback zu sammeln und dann wieder in die Produktionsversion zurückzukehren.
Das ist, was Kanalwechsel ermöglicht. Eine auf einem Gerät installierte App kann den Updatekanal während der Ausführung ändern, wodurch eine Produktionsanwendung zu einem flexiblen Raum für Überprüfung und Iteration wird, anstatt ein fester Endpunkt zu sein. Dies ist insbesondere für nicht-technische Stakeholder, die mit Produktionsanwendungen arbeiten, nützlich, da sie Änderungen testen und direkt in der App, die sie bereits installiert haben, Feedback geben können.
Updatekanäle verstehen
Updatekanäle sind die Art und Weise, wie Capgo Ziele für spezifische Builds verfolgt. Jeder Build ist mit einem Kanal verbunden, und dieser Kanal bestimmt, welche Updates er empfängt.
Beispiel: Sie können Updates in einem preview Kanal veröffentlichen, ohne die Benutzer auf productionbeeinflussen. In der Vergangenheit war ein Wechsel der Kanäle eine Installation einer anderen nativen Build oder eine manuelle Änderung der Gerätezuweisungen über das Dashboard erforderlich.
Kanäle in Capgo ermöglichen Ihnen:
- Zielgruppen mit unterschiedlichen Funktionen anzusprechen
- A/B-Tests durch die Zuweisung von Benutzern an verschiedene Kanäle durchzuführen
- Neue Funktionen allmählich einzuführen
- Erstellen von Beta-Testprogrammen
- Debuggen von Produktionsproblemen mit einzelnen Benutzern
Wenn Sie sich nicht mit den Update-Kanälen auskennen, finden Sie in der Capgo Dokumentation zu den Kanälen weitere Informationen. Was ist Channel-Surfing?
Channel-Surfing ermöglicht es einem installierten App, von verschiedenen Update-Strömen ohne Neuinstallation zu pullen. Eine installierte App kann den Update-Kanal bei Laufzeit ändern 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
zum Beispiel in einen production wechseln kann, um die neuesten Änderungen auszuprobieren. Wenn sie mit den Tests fertig sind, wechseln sie wieder zu preview Wieder. Eine Neuinstallation oder ein separates Preview-Build sind nicht erforderlich. production Unter der Haube arbeitet Channel-Surfing, indem 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 wirksam.
__CAPGO_KEEP_0__
How Channel-Surfing zu Implementieren
Bevor Sie Channel-Surfing ausprobieren können, muss Ihr Projekt mit Capgo Live Updates konfiguriert werden. Um das aufzusetzen, folgen Sie der Capgo Schnellstartanleitung.
Die einzige Einstellung, die für Channel-Surfing erforderlich ist, besteht darin, auf jedem Kanal, den Sie wechseln möchten, in der Capgo Oberfläche die Option 'Zugriff für Geräte erlauben' zu aktivieren. Keine code Änderungen oder Konfigurationsanpassungen erforderlich.
Im Kern wird Channel-Surfing durch eine einzelne 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 nach Updates abgefragt wird. Erhalten Sie weitere Informationen zur Funktion setChannel API.
Instant Channel Switching (ab v5.34.0+)
Ab Plugin-Version 5.34.0, 6.34.0, 7.34.0 oder 8.0.0 (abhängig von Ihrer Hauptversion) funktioniert Channel-Surfing anders und viel schneller: Die Einstellungen für Channel-Surfing sind abhängig von Ihrer Hauptversion. setChannel() Die Einstellungen für Channel-Surfing sind abhängig von Ihrer Hauptversion.
- Hintergrundvalidierung (nur Lesen): Eine Anfrage wird an den Capgo-Backend gesendet, um zu überprüfen, ob der Kanal erlaubt ist
- Speicherung in der lokalen Zwischenspeicherung: Wenn die Überprüfung erfolgreich ist, wird der Kanal im Gerätespeicher gespeichert
- Unmittelbarer Effekt: Die nächste Aktualisierungsprüfung verwendet den neuen Kanal sofort
Zuvor setChannel() hatte man den Kanal-Übertrag in der Backend-Datenbank (wie Dashboard oder API-Änderungen) gespeichert. Die Geräte mussten auf die Backend-Replikation (bis zu 2 Minuten) warten, bevor der neue Kanal erkannt wurde. Die neue Verhaltensweise liest nur vom Backend (für die Überprüfung) und speichert lokal, was den Kanalwechsel sofortig macht.
Vollständiger Kanalwechsel-Flow
Für eine bessere Benutzererfahrung möchten Sie normalerweise mehr tun als nur den Kanal wechseln und auf die nächste 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 die ausgewählte Kanal-Update landet.
Ein typischer Flow sieht wie folgt aus:
- Den Kanal ändern (
setChannel) - Überprüfen Sie, ob ein Update verfügbar ist (
getLatest) - Das Update herunterladen und anwenden (
download,setodernext) - HTML text fragment from a longer Capgo UI string (parent key `alternatives_cta_questions`). Page/area: Capacitor live-update alternatives comparison page. Role: Long marketing or legal paragraph. Seen in: page alternatives.astro. Preserve Capgo product/brand and developer terms exactly. Message key `alternatives_cta_questions` (Alternatives CTA Questions). | HTML text fragment from a longer Capgo UI string (parent key `appflow_cta_questions`). Page/area: Appflow comparison / migration marketing copy. Role: Long marketing or legal paragraph. Seen in: page ionic-appflow.astro. Preserve Capgo product/brand and developer terms exactly. Message key `appflow_cta_questions` (Appflow CTA Questions). | HTML text fragment from a longer Capgo UI string (parent key `capwesome_cta_questions`). Page/area: Capawesome comparison page. Role: Long marketing or legal paragraph. Seen in: page capwesome.astro. Preserve Capgo product/brand and developer terms exactly. Message key `capwesome_cta_questions` (Capwesome CTA Questions). | HTML text fragment from a longer Capgo UI string (parent key `consulting_faq_subtitle`). Page/area: Consulting services page. Role: Section subtitle or tagline. Seen in: page consulting.astro. Preserve Capgo product/brand and developer terms exactly. Message key `consulting_faq_subtitle` (Consulting FAQ Subtitle). | Page/area: Appflow comparison / migration marketing copy. Role: Short UI label or navigation item. Seen in: page ionic-appflow.astro, page ionic-enterprise-plugins.astro, page solutions/ionic-enterprise-plugins.astro. Message key `appflow_plugins_or` (Appflow Plugins Or).
reload)
Wiederladen Sie die App, wenn nötig (
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');
Ein vollständiges Beispiel hier:
Wie Sie diese Flussstruktur gestalten, ist Ihnen überlassen. Sie könnten diese Schritte über mehrere Interaktionen aufteilen oder sie alle auf einmal ausführen. Unabhängig davon, wie Sie die Flussstruktur gestalten, müssen Sie sicherstellen, dass Sie auf Fehler reagieren. Netzwerkprobleme oder ein ungültiger Kanal können alle verhindern, dass ein Update angewendet wird.
Die Einzige Anforderung: Selbstzuweisung aktivieren Dies ist die einzige Sache, die Sie tun müssen, um Kanalwechsel zu ermöglichen. setChannel(), you must enable self-assignment for that channel in the Capgo dashboard:
- zum Aktivieren: Gehe zur Seite mit den Kanälen: Abschnitt in Ihrem Capgo-Dashboard
- Klicken Sie auf den Kanalnamen, den Sie verwalten möchten
- Aktivieren „Zulassen, dass Geräte sich selbst zuordnen“
- Speichern Sie die Änderungen

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 Sie möchten, dass Benutzer wechseln können.
Wenn diese Einstellung deaktiviert ist, versagt jeder Versuch, mit diesem Kanal zu arbeiten und das setChannel() Ereignis wird ausgelöst. channelPrivate Verfügbare Kanäle auflisten
Listing Available Channels
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 der Gerät zugewiesen ist:
const { channel } = await CapacitorUpdater.getChannel();
console.log('Current channel:', channel);
Zurücksetzen auf Standardkanal
Um die Kanalüberladung zu entfernen und auf den Standard zurückzukehren:
await CapacitorUpdater.unsetChannel({});
Dies löst das Gerät von einem spezifisch zugewiesenen Kanal ab, sodass es auf den defaultChannel in Ihrer Konfiguration oder im Cloud-Standard zurückfällt.
Wie man Channel-Surfing testet
Um Channel-Surfing in Aktion zu sehen, benötigen Sie ein Release-Build - das @capgo/capacitor-updater API is designed for release builds. In debug builds, the app typically loads JavaScript from a development server instead, which bypasses the normal update flow.
Voraussetzungen
Die einzige Anforderung für das Channel-Surfen ist die Aktivierung “Zulassen, dass Geräte sich selbst assoziieren” auf jedem Channel, den Sie für das Umstellen zulassen möchten. Keine Konfigurationsänderungen sind in Ihrer App erforderlich.
Erstellung eines Testbuilds
Erstellen 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 Channel starten, der als Cloud-Standard in Ihrem Capgo-Dashboard eingestellt ist.
Veröffentlichung von Updates auf verschiedenen Kanälen
Einmal 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 Channel-Wechsel aus. Die App sollte das Update vom ausgewählten Channel herunterladen und in die neue Version neu laden.
Erstellung eines Channel-Wechsel-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 Vorab-Channel umschaltet.
Hier ist ein Beispiel für eine React-Komponente für einen Channel-Wechseler:
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 Channel-Surfen, aber sie werden schnell sichtbar, sobald Sie das Channel-Surfen bei Laufzeit ausführen.
Laufzeit-Versionen-unterschiede
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 Channel-Surfen das Problem beobachten, dass die App die Kanäle wechselt, aber keine Aktualisierung angewendet wird, obwohl eine auf diesem Kanal existiert, liegt das oft daran, dass die Aktualisierung von einer anderen native Version der App veröffentlicht wurde. Stellen Sie sicher, dass der Bundle Ihres Kanals mit der native Version auf dem Gerät kompatibel ist.
Entfernen oder Rückschaltung von Updates
Wenn eine App bereits ein Update für einen Kanal heruntergeladen hat, entfernt die Löschung dieses Updates aus der __CAPGO_KEEP_0__-Oberfläche es nicht von Geräten, die es bereits haben. Die Löschung stoppt nur zukünftige Downloads.
If an app has already downloaded an update for a channel, deleting that update from the Capgo dashboard does not remove it from devices that already have it. Deletion only stops __CAPGO_KEEP_0__ bietet auch eine Rückschaltmechanik, die Clients anweist, eine vorherige stabile Aktualisierung erneut anzuwenden oder auf die Aktualisierung zurückzufallen, die im Build eingebettet ist. Überlegungen zur Datenmigration
OTA-Update-Hinweise
Capgo also provides a rollback mechanism that can instruct clients to re-apply a previous stable update or fall back to the update embedded in the build.
Laufzeit-Versionen-unterschiede
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 zwischen ihnen Probleme verursachen.
Beispiel: Wenn ein Beta-Update eine Datenbankmigration anwendet, versteht die Produktionsversion möglicherweise nicht das neue Schema. Entwickler sollten sicherstellen, dass ihre Updates sicher sind, um zwischen ihnen zu wechseln, oder die Wechselrichtung einschränken, wenn nötig.
Wozu Channel-Surfing verbessert
Channel-Surfing ist besonders nützlich, wenn Sie schnell Änderungen in einer Produktionsumgebung überprüfen müssen.
Schnelle Validierung
Bilden Sie sich vor Augen, dass ein dringender Bug-Fix vor der Veröffentlichung überprüft werden muss. Mit Channel-Surfing kann die Änderung auf einen kleinen Satz von Benutzern beschränkt werden, die sie überprüfen können, bevor sie in die Produktionsumgebung gelangen.
Stakeholder-Überprüfung
Ein Produktbesitzer oder QA-Experte kann die installierte Produktionsversion auf einen anderen Update-Kanal umschalten, die Änderung oder Funktion überprüfen und dann wieder zurück umschalten, wenn er fertig ist.
Strukturierte Tests
Dies erleichtert es, nicht-technische Stakeholder in die Überprüfung und Entscheidungsfindung einzubeziehen, während der Workflow glatt bleibt. Ein einzelnes Produktionsbuild wird zu einem flexiblen Werkzeug für Tests, Feedback und Validierung.
Anwendungsfälle
- Kontrollierte Tests: Lassen Sie die QA-Team zwischen Featurezweigen wechseln
- Beta-Programme: Benutzer wählen sich für die Beta-Kanal für frühen Zugriff aus
- Stakeholder-Überprüfung: Produktbesitzer präsentieren sich Änderungen vor der Veröffentlichung
- A/B-Testung: 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 | Wirkungszeit | Persistierte Wo | Anwendungsbereich |
|---|---|---|---|
setChannel() context: Seite/ Bereich: Capgo-Lösungen-Marketingseite. Rolle: Kurzer UI-Label oder Navigationselement. Gesehen in: Seite solutions/cordova-to-capacitor-ai.astro. Nachrichtenschlüssel `solutions_cordova_to_capacitor_ai_table_use_case` (Solutions Cordova To Capacitor Ai Table Use Case) |
aus Plugin | Instant | Gerät nur (lokal) |
| Benutzerinitiierte Wechsel des Kanals in-app | Überwachungsgerät-Übertragung | bis zu 2 min | Hintergrund-Datenbank |
| API channel assignment | __CAPGO_KEEP_0__ Kanalzuweisung | Hintergrund-Datenbank | Automatisierte Hintergrundintegrationen |
Für die beste Benutzererfahrung beim Erstellen von UIs für das Wechseln von Kanälen, verwenden Sie immer die Methode des Plugins. setChannel() Best Practices
Zugriff einschränken
- : Kanalsurfen ist normalerweise für den internen Gebrauch gedacht - vermeiden Sie es, es allen Benutzern zugänglich zu machenFehler behandeln
- : Behandeln Sie Fehler immer freundlich, wenn Sie Kanäle wechselnKompatibilität überprüfen
- : Stellen Sie sicher, dass Updates auf verschiedenen Kanälen mit der installierten nativen Version kompatibel sindKanäle dokumentieren
- Limit Access: Dokumentieren Sie die Aufgaben jeder Kanalinstanz klar und deutlich
- Monitor Usage: Verfolgen Sie, welche Geräte auf welchen Kanälen für Debuggingzwecke laufen
Ressourcen
Zusammenfassung
Das Kanalwechseln verändert, wie Sie Ihre Capacitor-Anwendung iterieren können. Anstatt Produktionsbuilds als fixe 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 jüngsten Pluginversionen ist die Erfahrung jetzt nahtlos - Benutzer können Kanäle wechseln und erhalten sofort Updates vom neuen Kanal ohne Wartezeit.
Ob Sie Bugfixes mit Stakeholdern validieren, Beta-Programme durchführen oder Probleme mit bestimmten Benutzern debuggen, das Kanalwechseln bietet Ihnen die Flexibilität, das richtige Update an den richtigen Benutzer zur richtigen Zeit zu liefern.
Fortsetzung von Channel Surfing für Capgo: Wie Sie Update-Kanäle bei Laufzeit umschalten
Wenn Sie Channel Surfing für Capgo: Wie Sie Update-Kanäle bei Laufzeit umschalten um Kanälroutings und die Stufenrollout zu planen, verbinden Sie es mit Kanäle Kanäle Kanäle Kanäle Kanäle Testlösung für Beta um das Produktworkflow in Testlösung für Beta und for the product workflow in Beta Testing Solution, and Versionziel-Lösung Versionziel-Lösung für das Produktworkflow.