Saltare al contenuto

Canali

I canali sono il meccanismo di base per la gestione degli aggiornamenti dell'applicazione in Capgo. Consentono di controllare come e quando gli utenti ricevono gli aggiornamenti, abilitando funzionalità come il testing A/B, i rilasci in fasi e gli aggiornamenti specifici per piattaforma.

Un canale rappresenta un tracciato di distribuzione per gli aggiornamenti dell'applicazione. Ogni canale può essere configurato con regole e vincoli specifici:

  • Controllo del pacchetto (versione): Specificare quale pacchetto (versione) gli utenti ricevono
  • Targetting per piattaforma: Target specifiche piattaforme (iOS/Android/Electron)
  • Politiche di aggiornamento: Controllare come gli aggiornamenti sono consegnati
  • Restrizioni per dispositivi: Gestisci quali dispositivi possono accedere agli aggiornamenti
  • pubblico: Imposta come canale predefinito per i nuovi dispositivi
  • disableAutoUpdateUnderNative: Impedisce gli aggiornamenti quando la versione nativa dell'applicazione del dispositivo è più recente della versione disponibile nel canale (ad esempio, il dispositivo è in versione nativa 1.2.3, ma il canale ha la versione 1.2.2)
  • disableAutoUpdate: Controlla il comportamento degli aggiornamenti (“major”, “minor”, “version_number”, “none”)
  • ios/android/electron: Abilita/disabilita per piattaforme specifiche
  • consenti_impostazioni_di_dispositivo: Lascia che i dispositivi scegliano il canale
  • allow_emulator: Consentire gli aggiornamenti sui dispositivi emulator
  • allow_dev: Consentire gli aggiornamenti sui build di sviluppo
  1. Canale di Test: Mantieni un canale di test per la validazione interna
  2. Rilascio Stagionale: Utilizza più canali per il rilascio graduale degli aggiornamenti
  3. Separazione per Piattaforma: Crea canali separati per iOS, Android e Electron quando necessario
  4. Bundle (versione) Controllo: Utilizza la versioning semantico per percorsi di aggiornamento chiari

https://api.capgo.app/channel/

Crea o aggiorna una configurazione del canale.

type disable_update = "major" | "minor" | "version_number" | "none"
interface ChannelSet {
app_id: string
channel: string
version?: string // bundle (version) name
public?: boolean
disableAutoUpdateUnderNative?: boolean
disableAutoUpdate?: disable_update
ios?: boolean
android?: boolean
electron?: boolean
allow_device_self_set?: boolean
allow_emulator?: boolean
allow_dev?: boolean
}
Finestra del terminale
curl -X POST \
-H "authorization: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"app_id": "app_123",
"channel": "beta",
"version": "1.2.0",
"public": false,
"disableAutoUpdate": "minor",
"ios": true,
"android": true,
"electron": true,
"allow_emulator": true
}' \
https://api.capgo.app/channel/
{
"status": "ok"
}

https://api.capgo.app/channel/

Recupera informazioni sul canale. Restituisce 50 canali per pagina.

  • app_id: Obbligatorio. L'ID del tuo app
  • page: Opzionale. Numero di pagina per la paginazione
  • channel: Opzionale. Nome del canale specifico da recuperare
Finestra del terminale
# Get all channels
curl -H "authorization: your-api-key" \
"https://api.capgo.app/channel/?app_id=app_123"
# Get specific channel
curl -H "authorization: your-api-key" \
"https://api.capgo.app/channel/?app_id=app_123&channel=beta"
# Get next page
curl -H "authorization: your-api-key" \
"https://api.capgo.app/channel/?app_id=app_123&page=1"
interface Channel {
id: number;
created_at: string;
name: string;
app_id: string;
version: { // bundle (version) assigned to the channel
id: number,
name: string
};
created_by: string;
updated_at: string;
public: boolean;
disableAutoUpdateUnderNative: boolean;
disableAutoUpdate: boolean;
allow_emulator: boolean;
allow_dev: boolean;
}

Nella risposta riportata di seguito, version si riferisce al pacchetto (versione) assegnato al canale.

{
"data": [
{
"id": 1,
"name": "production",
"app_id": "app_123",
"version": {
"id": 1,
"name": "1.0.0"
},
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-01T00:00:00Z",
"created_by": "user_123",
"public": true,
"disableAutoUpdateUnderNative": false,
"disableAutoUpdate": false,
"allow_emulator": false,
"allow_dev": false
}
]
}

https://api.capgo.app/channel/

Elimina un canale. Nota che ciò influenzerà tutti i dispositivi che utilizzano questo canale.

interface Channel {
channel: string
app_id: string
}
Finestra del terminale
curl -X DELETE \
-H "authorization: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"app_id": "app_123",
"channel": "beta"
}' \
https://api.capgo.app/channel/
{
"status": "ok"
}

Scenari di errore comuni e relative 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"
}
  1. Test di Beta
{
"app_id": "app_123",
"channel": "beta",
"version": "1.2.0-beta",
"public": false,
"allow_emulator": true,
"allow_dev": true
}
  1. Distribuzione in Produzione
{
"app_id": "app_123",
"channel": "production",
"version": "1.2.0",
"public": true,
"disableAutoUpdate": "minor"
}
  1. Aggiornamenti specifici per piattaforma
{
"app_id": "app_123",
"channel": "ios-hotfix",
"version": "1.2.1",
"ios": true,
"android": false
}