Hauptinhalt überspringen
Anleitung

Kanalwechsel für Capgo: Wie Sie Update-Kanäle bei Laufzeit umschalten

Versenden Sie Änderungen an bestimmten Benutzern sofort mit Capgo's Laufzeitkanalwechsel. Umschalten Sie Update-Kanäle ohne Ihre Capacitor-App neu zu installieren.

Martin Donadieu

Martin Donadieu

Inhaltsmarketer

Kanalwechsel für Capgo: Wie Sie Update-Kanäle bei Laufzeit umschalten

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.

  1. Hintergrundvalidierung (nur Lesen): Eine Anfrage wird an den Capgo-Backend gesendet, um zu überprüfen, ob der Kanal erlaubt ist
  2. Speicherung in der lokalen Zwischenspeicherung: Wenn die Überprüfung erfolgreich ist, wird der Kanal im Gerätespeicher gespeichert
  3. 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:

  1. Den Kanal ändern (setChannel)
  2. Überprüfen Sie, ob ein Update verfügbar ist (getLatest)
  3. Das Update herunterladen und anwenden (download, set oder next)
  4. 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:

  1. zum Aktivieren: Gehe zur Seite mit den Kanälen: Abschnitt in Ihrem Capgo-Dashboard
  2. Klicken Sie auf den Kanalnamen, den Sie verwalten möchten
  3. Aktivieren „Zulassen, dass Geräte sich selbst zuordnen“
  4. Speichern Sie die Änderungen

Aktivieren Sie die Selbstzuordnung in den Kanal-Einstellungen

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

  1. : Kanalsurfen ist normalerweise für den internen Gebrauch gedacht - vermeiden Sie es, es allen Benutzern zugänglich zu machenFehler behandeln
  2. : Behandeln Sie Fehler immer freundlich, wenn Sie Kanäle wechselnKompatibilität überprüfen
  3. : Stellen Sie sicher, dass Updates auf verschiedenen Kanälen mit der installierten nativen Version kompatibel sindKanäle dokumentieren
  4. Limit Access: Dokumentieren Sie die Aufgaben jeder Kanalinstanz klar und deutlich
  5. 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.

Live-Updates für Capacitor-Apps

Wenn ein Web-Schicht-Bug live ist, schicken Sie die Reparatur über Capgo anstatt Tage für die Genehmigung des App-Stores zu warten. Die Benutzer erhalten die Aktualisierung im Hintergrund, während native Änderungen im normalen Review-Verfahren bleiben.

Menschliche Unterstützung von Martin

Los geht's jetzt

Neueste von unserem Blog

Capgo gibt Ihnen die besten Einblicke, die Sie benötigen, um ein wirklich professionelles Mobiltelefon-App zu erstellen.