Canali
Copia un prompt di configurazione con le istruzioni di installazione e la guida markdown completa per questo plugin.
I canali sono il meccanismo di base per la gestione degli aggiornamenti dell'applicazione in Capgo. Consentono di controllare come e quando i tuoi utenti ricevono gli aggiornamenti, abilitando funzionalità come il testing A/B, i rilasci in fase di testing e gli aggiornamenti specifici per piattaforma.
Capire i canali
Sezione intitolata “Capire i canali”Un canale rappresenta una pista di distribuzione per gli aggiornamenti dell'applicazione. Ogni canale può essere configurato con regole e vincoli specifici:
- Controllo del pacchetto (versione): Specifica quale pacchetto (versione) gli utenti ricevono
- Target di Piattaforma: Scegliere piattaforme specifiche (iOS/Android/Electron)
- Politiche di Aggiornamento: Controllare come gli aggiornamenti vengono consegnati
- Restrizioni di Dispositivo: Gestire quali dispositivi possono accedere agli aggiornamenti
Opzioni di Configurazione del Canale
: Sezione intitolata “Opzioni di Configurazione del Canale”- pubblico: Impostare come canale predefinito per i nuovi dispositivi.
- disabilitaAggiornamentoAutoSottoAppNativa: Prevenire gli aggiornamenti quando la versione dell'app nativa del dispositivo è più recente della versione stabile del bundle del canale.
- disabilitaAggiornamentoAutomatico: Regola il comportamento dell'aggiornamento (
major,minor,metadata,patch, onone). - aggiornaPacco: Regola se i dispositivi scaricano un zip, un delta o entrambi (
all,zip,delta,zip_from_builtin, odelta_from_builtin). Vedi Pacco di aggiornamento. - ios/android/electron: Abilita o disabilita la consegna per piattaforma.
- consenti_impostazione_dispositivo: Lascia che i dispositivi scelgano il canale.
- abilita_emulatore, abilita_dispositivo, abilita_dev, abilita_prodControlla quali dispositivi e tipi di build ricevono gli aggiornamenti.
- Rullo progressivoMantieni un bundle stabile mentre esponi un bundle di destinazione a un gruppo di utenti fedeli. Vedi Rulli progressivi.
Pratiche migliori
Sezione intitolata “Pratiche migliori”- Canale di testingMantieni un canale di testing per la validazione interna
- Distribuzione in fase di staging: Utilizza più canali per la distribuzione graduale degli aggiornamenti
- Separazione di piattaforma: Crea canali separati per iOS, Android e Electron quando necessario
- Controllo del pacchetto (versione): Utilizza la versioning semantico per percorsi di aggiornamento chiari
Endpoint
Sezione intitolata “Endpoint”https://api.capgo.app/channel/
Creare o aggiornare una configurazione di canale.
Corpo della richiesta
Sottosezione intitolata “Corpo della richiesta”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}Per i campi di rollout e di pausa automatica, il API accetta anche l'equivalente snake_case forma, come rollout_version o auto_pause_enabled. updatePackage anche accetta update_package. Se vengono forniti entrambi i formati, il valore in camelCase prevale. rollback è in camelCase solo.
Un obiettivo di rollout richiede un canale esistente. Deve avere già assegnato un bundle stabile o riceverne uno attraverso version nella stessa richiesta POST. rollback e promoteToStable azioni terminali; non combinarle tra loro.
Esempio di richiesta
Esempio di richiestaConfigura un rollout del 5% per un canale esistente production finestra del terminale
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/Esempio di richiesta
Copia negli appunti{ "status": "ok"}Esempio di richiesta
App Preview key boundary
Sezione intitolata “App Preview key boundary”Per una anteprima di PR con privilegi minimi, autenticati questo endpoint con authorization: $CAPGO_API_KEY o capgkey: $CAPGO_API_KEYLa x-api-key La testata non viene accettata dai canali API.
Un app_preview Una chiave può creare un nuovo canale di anteprima non pubblico. La creazione assegna automaticamente a quella chiave un binding di ciclo di vita scollegato per quel canale solo. Il ruolo non include channel.update_settings, quindi non può utilizzare POST per aggiornare un canale esistente, compreso un canale predefinito o principale.
Lasciare public impostato (o impostarlo su false) per i canali di anteprima PR. Utilizzare bundle upload --channel Per la creazione e l'upload del flusso al posto di trattare POST come un preview-channel upsert generico.
https://api.capgo.app/channel/
Recupera informazioni sul canale. Restituisce 50 canali per pagina. Senza channel, la risposta è un array. Con channel, la risposta è un oggetto di canale singolo.
Parametri di query
Sezione intitolata “Parametri di query”app_id: Obbligatorio. L'ID della tua apppage: Facoltativo. Numero di pagina per la paginazionechannel: Facoltativo. Nome del canale specifico da recuperare
Esempi di richiesta
Sezione intitolata “Richieste di esempio”# 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"Tipo di Risposta
Sezione intitolata “Tipo di Risposta”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 è un atto di scorciatoia di input e non viene restituito. Una distribuzione sospesa è rappresentata da un valore non nullo rolloutPausedAt.
Risposta di esempio
Sezione intitolata “Risposta di esempio”[ { "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" }]Cancella
Sezione intitolata “Cancella”https://api.capgo.app/channel/
Elimina un canale. Nota che ciò influenzerà tutti i dispositivi che utilizzano questo canale.
Corpo della richiesta
Sezione intitolata “Corpo della richiesta”interface Channel { channel: string app_id: string delete_bundle?: boolean // also delete the linked bundle}Esempio di richiesta
Sezione intitolata “Esempio di richiesta”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/Risposta di successo
Sezione intitolata “Risposta di successo”{ "status": "ok"}Pulizia anteprima dell'app
Sezione intitolata “Pulizia anteprima dell'app”Con delete_bundle: true, un app_preview chiave può pulire atomicamente solo un canale che ha creato e il suo bundle collegato, non condiviso. La chiave non riceve una bundle.delete permesso generale.
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/Gestione degli errori
Sezione intitolata “Gestione degli errori”Scenari di errori comuni e le loro risposte:
// 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"}Casi d'uso comuni
Titolo della sezione “Casi d'uso comuni”- Test di beta
{ "app_id": "com.example.app", "channel": "beta", "version": "1.2.0-beta", "public": false, "allow_emulator": true, "allow_dev": true}- Copia negli appunti
{ "app_id": "com.example.app", "channel": "production", "version": "1.2.0", "public": true, "disableAutoUpdate": "minor"}- Copia negli appunti
{ "app_id": "com.example.app", "channel": "ios-hotfix", "version": "1.2.1", "ios": true, "android": false}Copia negli appunti
Continua da qui: CanaliTitolo della sezione “Continua da qui: Canali” Se stai utilizzando Canali (nome del feature di Capgo per i canali di rilascio). Pagina/Area: Pagina di marketing delle soluzioni Capgo. Ruolo: Etichetta di navigazione breve o elemento di menu. Visualizzato in: pagina solutions/white-label.astro. Chiave di messaggio `solutions_white_label_visual_cell2_value` (Valore della cella visiva del white label delle soluzioni). Canali per i dettagli di implementazione in Canali, Canali per i dettagli di implementazione in Canali, Soluzione di Test Beta per il flusso di lavoro del prodotto in Soluzione di Test Beta, Soluzione di Targeting della Versione per il flusso di lavoro del prodotto in Soluzione di Targeting della Versione, e Capgo Pratiche per l'ambiente Migliori: Staging con un ID di App Mobile per il contesto pratico in Capgo Pratiche per l'ambiente Migliori: Staging con un ID di App Mobile.