Kanäle
Eine Setup-Anweisung mit den Installationsanweisungen und der vollständigen Markdown-Dokumentation für diesen Plugin kopieren
Kanäle sind die zentrale Mechanism für die Verwaltung von App-Updates in Capgo. Sie ermöglichen Ihnen, wie und wann Ihre Benutzer Updates erhalten, was Funktionen wie A/B-Test, geplante Rollouts und plattform-spezifische Updates ermöglicht.
Kanäle verstehen
Abschnitt mit dem Titel “Kanäle verstehen”Ein Kanal stellt eine Verteilungsstrecke für Ihre App-Updates dar. Jeder Kanal kann mit spezifischen Regeln und Einschränkungen konfiguriert werden:
- Bündel (Version) Kontrolle: Angeben, welches Bündel (Version) die Benutzer erhalten
- Plattform-Zielgruppierung: Ziele bestimmte Plattformen (iOS/Android/Electron)
- Update-Politiken: Kontrollieren Sie, wie Updates geliefert werden
- Gerätebeschränkungen: Verwalten Sie, welche Geräte Zugriff auf Updates haben
Kanal-Konfigurationsoptionen
Abschnitt mit dem Titel "Kanal-Konfigurationsoptionen"- öffentlich: Setzen Sie diesen Kanal als Standardkanal für neue Geräte.
- disableAutoUpdateUnderNative: Verhindern Sie Updates, wenn die Geräte-App-Version neuere ist als die stabile Bundle des Kanals.
- disableAutoUpdate: Steuere die Aktualisierungsverhalten (
major,minor,metadata,patch, odernone). - updatePackage: Steuere, ob Geräte ein Zip, ein Delta oder beide herunterladen sollen (
all,zip,delta,zip_from_builtin, oderdelta_from_builtin). Siehe Aktualisierungs-Paket. - ios/android/electron: Aktivieren oder deaktivieren Sie die Lieferung nach Plattform.
- allow_device_self_set: Lassen Sie Geräten ihren Kanal wählen.
- allow_emulator, allow_device, allow_dev, allow_prod: Steuern Sie, welche Geräte und Build-Typen Updates erhalten.
- Progressive rollout: Halten Sie eine stabile Bundle-Version aufrecht, während eine Ziel-Bundle-Version einer festen Kohorte zugänglich ist. Siehe Progressive rollouts.
Best Practices
Abschnitt mit dem Titel „Best Practices“- Testing Channel: Halten Sie einen Testkanal für interne Validierung aufrecht.
- Stufenfähiger Rollout: Verwenden Sie mehrere Kanäle für den schrittweisen Einbau von Updates
- Plattformtrennung: Erstellen Sie separate Kanäle für iOS, Android und Electron, wenn erforderlich
- Bundle (Version) Kontrolle: Verwenden Sie semantische Versionsnummerierung für klare Updatepfade
Endpunkte
Abschnitt mit dem Titel „Endpunkte“https://api.capgo.app/channel/
Eine Kanal-Konfiguration erstellen oder aktualisieren.
Anforderungskörper
Abschnitt mit dem Titel „Anforderungskörper“type DisableAutoUpdate = "major" | "minor" | "metadata" | "patch" | "none"type AutoPauseAction = "pause" | "rollback" | "notify"
interface ChannelSet { app_id: string channel: string version?: string | null // stable bundle name public?: boolean disableAutoUpdateUnderNative?: boolean disableAutoUpdate?: DisableAutoUpdate updatePackage?: "all" | "zip" | "delta" | "zip_from_builtin" | "delta_from_builtin" ios?: boolean android?: boolean electron?: boolean allow_device_self_set?: boolean allow_emulator?: boolean allow_device?: boolean allow_dev?: boolean allow_prod?: boolean
// Progressive rollout (camelCase is preferred) rolloutVersion?: string | number | null // target bundle name or ID rolloutPercentage?: number // 0–100 rolloutPercentageBps?: number // 0–10000; takes precedence when both are set rolloutEnabled?: boolean rolloutPaused?: boolean // input-only convenience flag rolloutPausedAt?: string | null // ISO timestamp or null rolloutPauseReason?: string | null rolloutCacheTtlSeconds?: number // 60–31536000 rollback?: boolean promoteToStable?: boolean
// Rollout auto-pause policy autoPauseEnabled?: boolean autoPauseWindowMinutes?: number autoPauseFailureRateBps?: number | null autoPauseConfidence?: number autoPauseMinAttempts?: number | null autoPauseMinFailures?: number | null autoPauseAction?: AutoPauseAction autoPauseCooldownMinutes?: number}Für die Ausrollen- und Auto-Pause-Felder akzeptiert API auch die entsprechende snake_case Form, wie z.B. rollout_version oder auto_pause_enabled. updatePackage Für die Ausrollen- und Auto-Pause-Felder akzeptiert __CAPGO_KEEP_0__ auch die entsprechende Form, wie z.B. update_packageoder rollback akzeptiert auch
. Wenn beide Formen bereitgestellt werden, gewinnt der camelCase-Wert. version ist nur camelCase. rollback und promoteToStable sind Terminalaktionen; kombinieren Sie sie nicht miteinander.
Beispielanfrage
BeispielanfrageEin bestehenden Kanal mit einer bereits festgelegten stabilen Bundle-Konfiguration konfigurieren: production Terminalfenster
curl -X POST \ -H "authorization: your-api-key" \ -H "Content-Type: application/json" \ -d '{ "app_id": "com.example.app", "channel": "production", "rolloutVersion": "1.3.0", "rolloutPercentage": 5, "rolloutEnabled": true, "rolloutCacheTtlSeconds": 2592000, "autoPauseEnabled": true, "autoPauseFailureRateBps": 500, "autoPauseMinAttempts": 100, "autoPauseAction": "pause" }' \ https://api.capgo.app/channel/Auf die Zwischenablage kopieren
POST ist ein Upsert und gibt nur seinen Status zurück. Machen Sie eine GET-Anfrage, um die resultierende Kanalkonfiguration zu lesen.{ "status": "ok"}Ein bestehenden Kanal mit einer bereits festgelegten stabilen Bundle-Konfiguration konfigurieren:
App-Vorschau-Schlüssel-Grenze
Überschrift: App-Vorschau-Schlüssel-GrenzeFür eine Berechtigung auf das Mindeste für eine PR-Vorschau, authentifizieren Sie diesen Endpunkt mit authorization: $CAPGO_API_KEY oder capgkey: $CAPGO_API_KEYHTML-Textfragment aus einem längeren Capgo-UI-String (Elternschlüssel `alternatives_cta_questions`). Seite/Bereich: Vergleichsseite für lebendige Capacitor-Alternativen. Rolle: Langer Marketing- oder Rechtsparagraph. Gesehen in: Seite alternatives.astro. Bewahren Sie Capgo-Produkt- und -Markenbegriffe sowie Entwicklertitel genau auf. Nachrichtenschlüssel `alternatives_cta_questions` (Alternativen-CTA-Fragen). | HTML-Textfragment aus einem längeren Capgo-UI-String (Elternschlüssel `appflow_cta_questions`). Seite/Bereich: Appflow-Vergleichs- und -Migration-Marketing-Kopie. Rolle: Langer Marketing- oder Rechtsparagraph. Gesehen in: Seite ionic-appflow.astro. Bewahren Sie Capgo-Produkt- und -Markenbegriffe sowie Entwicklertitel genau auf. Nachrichtenschlüssel `appflow_cta_questions` (Appflow-CTA-Fragen). | HTML-Textfragment aus einem längeren Capgo-UI-String (Elternschlüssel `capwesome_cta_questions`). Seite/Bereich: Capawesome-Vergleichsseite. Rolle: Langer Marketing- oder Rechtsparagraph. Gesehen in: Seite capwesome.astro. Bewahren Sie Capgo-Produkt- und -Markenbegriffe sowie Entwicklertitel genau auf. Nachrichtenschlüssel `capwesome_cta_questions` (Capwesome-CTA-Fragen). | HTML-Textfragment aus einem längeren Capgo-UI-String (Elternschlüssel `consulting_faq_subtitle`). Seite/Bereich: Beratungsdienste-Seite. Rolle: Untertitel oder Slogan. Gesehen in: Seite consulting.astro. Bewahren Sie Capgo-Produkt- und -Markenbegriffe sowie Entwicklertitel genau auf. Nachrichtenschlüssel `consulting_faq_subtitle` (Beratungsdienste-FAQ-Untertitel). | Seite/Bereich: Appflow-Vergleichs- und -Migration-Marketing-Kopie. Rolle: Kurzer UI-Label oder Navigationspunkt. Gesehen in: Seite ionic-appflow.astro, Seite ionic-enterprise-plugins.astro, Seite Lösungen/ionic-enterprise-plugins.astro. Nachrichtenschlüssel `appflow_plugins_or` (Appflow-Plugins-oder). x-api-key header is not accepted by the Channels API.
Überschrift wird nicht von den Kanälen __CAPGO_KEEP_0__ akzeptiert. app_preview Ein channel.update_settingsSchlüssel kann eine neue nicht öffentliche Vorschaukanal erstellen. Die Erstellung gibt dem Schlüssel automatisch eine Kanal-basierte Lebenszyklusbindung für diesen Kanal nur. Die Rolle umfasst nicht
, daher kann sie nicht POST verwenden, um einen bestehenden Kanal, einschließlich eines bestehenden Standards- oder Hauptkanals, zu aktualisieren. public Verlassen falseunbesetzt (oder setzen Sie es auf bundle upload --channel für die Erstellung und den Upload-Flow anstatt, POST als allgemeinen Preview-Channel upsert zu behandeln.
https://api.capgo.app/channel/
Kanalinformationen abrufen. Gibt 50 Kanäle pro Seite zurück. Ohne channel, die Antwort ist ein Array. Mit channel, ist die Antwort ein Kanalobjekt.
Abfrageparameter
Abschnitt mit dem Titel “Abfrageparameter”app_id: Pflichtfeld. Die ID deiner Apppage: Optional. Seitennummer für die Paginierungchannel: Optional. Spezifischer Kanalname zum Abrufen
Beispielanfragen
Abschnitt mit dem Titel “Beispielanfragen”# Get all channelscurl -H "authorization: your-api-key" \ "https://api.capgo.app/channel/?app_id=com.example.app"
# Get a specific channelcurl -H "authorization: your-api-key" \ "https://api.capgo.app/channel/?app_id=com.example.app&channel=production"
# Get the next pagecurl -H "authorization: your-api-key" \ "https://api.capgo.app/channel/?app_id=com.example.app&page=1"Antworttyp
Abschnitt mit dem Titel “Antworttyp”interface Channel { id: number created_at: string updated_at: string name: string app_id: string created_by: string public: boolean disableAutoUpdateUnderNative: boolean disableAutoUpdate: DisableAutoUpdate updatePackage: "all" | "zip" | "delta" | "zip_from_builtin" | "delta_from_builtin" allow_device_self_set: boolean allow_emulator: boolean allow_device: boolean allow_dev: boolean allow_prod: boolean version: { id: number, name: string } | null // stable bundle
// These three response identifiers intentionally use snake_case. rollout_version: number | null rollout_id: string rollout_version_info: { id: number, name: string } | null
rolloutPercentageBps: number rolloutEnabled: boolean rolloutPausedAt: string | null rolloutPauseReason: string | null rolloutCacheTtlSeconds: number autoPauseEnabled: boolean autoPauseWindowMinutes: number autoPauseFailureRateBps: number | null autoPauseConfidence: number autoPauseMinAttempts: number | null autoPauseMinFailures: number | null autoPauseAction: AutoPauseAction autoPauseCooldownMinutes: number autoPauseLastTriggeredAt: string | null autoPauseLastCheckedAt: string | null}rolloutPaused Dies ist ein Eingabezeichen und wird nicht zurückgegeben. Ein pausierter Rollout wird durch einen nicht-nullen Wert dargestellt. rolloutPausedAt.
Beispielantwort
Abschnitt mit dem Titel “Beispielantwort”[ { "id": 1, "name": "production", "app_id": "com.example.app", "updatePackage": "all", "version": { "id": 1, "name": "1.2.0" }, "rollout_version": 2, "rollout_id": "e60c19c9-2e65-4e0d-bc06-d1f5b4f96276", "rollout_version_info": { "id": 2, "name": "1.3.0" }, "rolloutPercentageBps": 500, "rolloutEnabled": true, "rolloutPausedAt": null, "rolloutCacheTtlSeconds": 2592000, "autoPauseEnabled": true, "autoPauseFailureRateBps": 500, "autoPauseAction": "pause" }]LÖSCHEN
DELETEhttps://api.capgo.app/channel/
Ein Kanal löschen. Beachten Sie, dass dies alle Geräte, die diesen Kanal verwenden, beeinflusen wird.
Anforderungskörper
Abschnitt mit dem Titel „Anforderungskörper“interface Channel { channel: string app_id: string delete_bundle?: boolean // also delete the linked bundle}Beispielanfrage
Abschnitt mit dem Titel „Beispielanfrage“curl -X DELETE \ -H "authorization: your-api-key" \ -H "Content-Type: application/json" \ -d '{ "app_id": "com.example.app", "channel": "beta" }' \ https://api.capgo.app/channel/Erfolgsantwort
Abschnitt mit dem Titel „Erfolgsantwort“{ "status": "ok"}Vorbereitung der App-Vorschau
Abschnitt mit dem Titel “App-Vorschau bereinigen”Mit delete_bundle: true, einem app_preview Schlüssel kann nur ein von ihm erstellter Kanal und dessen verbundener, nicht geteilter Bundle atomisch bereinigt werden. Der Schlüssel erhält keine allgemeine bundle.delete Erlaubnis.
curl -X DELETE \ -H "capgkey: $CAPGO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "app_id": "com.example.app", "channel": "pr-123", "delete_bundle": true }' \ https://api.capgo.app/channel/Fehlerbehandlung
Abschnitt mit dem Titel “Fehlerbehandlung”Häufige Fehlerfälle und ihre Antworten:
// Channel not found{ "error": "Channel not found", "status": "KO"}
// Invalid bundle (version) format{ "error": "Invalid version format. Use semantic versioning", "status": "KO"}
// Invalid update policy{ "error": "Invalid disableAutoUpdate value", "status": "KO"}
// Permission denied{ "error": "Insufficient permissions to manage channels", "status": "KO"}Häufige Verwendungsfälle
Abschnitt mit dem Titel “Gängige Anwendungsfälle”- Beta-Testen
{ "app_id": "com.example.app", "channel": "beta", "version": "1.2.0-beta", "public": false, "allow_emulator": true, "allow_dev": true}- Produktionsstart
{ "app_id": "com.example.app", "channel": "production", "version": "1.2.0", "public": true, "disableAutoUpdate": "minor"}- Plattformspezifische Updates
{ "app_id": "com.example.app", "channel": "ios-hotfix", "version": "1.2.1", "ios": true, "android": false}Weiter mit Kanälen
Abschnitt mit dem Titel “Weiter mit Kanälen”Wenn Sie Kanäle verwenden Kanäle für die Planung der Kanalsteuerung und der schrittweisen Veröffentlichung miteinander verbinden Kanäle zur Implementierungsdetail in Kanäle, Kanäle zur Implementierungsdetail in Kanäle, Testlösung für Beta zur Produktworkflow in Testlösung für Beta, Lösung für Versionsziel zur Produktworkflow in Lösung für Versionsziel, und Capgo Umgebungsbest Practices: Staging mit einem Mobile App ID zur praktischen Kontext in Capgo Umgebungsbest Practices: Staging mit einem Mobile App ID.