Saltare al contenuto principale

How Live Updates Work in Capgo

Deep dive into the technical implementation of live updates in Capgo, understanding how it works under the hood for both iOS and Android.

Crediti dell'articolo

Martin Donadieu

Autore

Valeria

Revisione

Jordan

Editor

Come funzionano gli aggiornamenti in tempo reale per Capgo

Capire gli aggiornamenti in tempo reale in Capgo

Gli aggiornamenti in tempo reale sono una delle funzionalità più potenti negli app Capacitor, consentendo aggiornamenti in tempo reale senza la necessità di sottoporre l'app alla store. Andiamo a esplorare in profondità come Capgo implementa questa funzionalità.

Concetti fondamentali

Un'app Capacitor è composta da due layer principali:

  1. Layer Web: Contiene file HTML, CSS e JavaScript caricati nel WebView
  2. Layer Nativo: Contiene code specifiche della piattaforma (Java/Kotlin per Android, Swift per iOS)

Gli aggiornamenti in tempo reale di Capgo funzionano sostituendo il layer web in esecuzione, poiché questi file non sono compilati nel binario dell'app.

Implementazione tecnica

Periferiche del server in Capacitor

Capgo gestisce due percorsi critici:

  • Percorso del server corrente: Si riferisce a file attualmente caricati in WebView
  • Percorso del server successivocontext: Pagina/area: Capgo Builder / prodotto di costruzione nativa di cloud. Ruolo: Etichetta di navigazione breve o elemento di navigazione. Chiave di messaggio `native_build_builder_credit_next` (Crediti del costruttore di build nativa).

: Si riferisce a file che caricheranno alla prossima riavvio dell'app

On Android, Capgo manages paths through:

// Store next server path
private void setNextCapacitorServerPath(String path) {
    SharedPreferences prefs = context.getSharedPreferences("CapWebViewSettings", Activity.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("serverBasePath", path);
    editor.apply();
}

// Update current path and reload
private void setCurrentCapacitorServerPath(String path) {
    bridge.setServerBasePath(path);
    bridge.reload();
}

Sulla piattaforma Android, __CAPGO_KEEP_0__ gestisce percorsi attraverso:

Implementazione iOS

// Store next server path
private func setNextCapacitorServerPath(path: String) {
    KeyValueStore.standard["serverBasePath"] = path
}

// Update current path
private func setCurrentCapacitorServerPath(path: String) {
    bridge.viewController.setServerBasePath(path: path)
}

Sulla piattaforma iOS, i percorsi sono gestiti attraverso:

Capgo implements military-grade security through end-to-end encryption, ensuring your app updates remain completely secure from development to deployment. Our encryption system goes beyond traditional code signing to provide true zero-knowledge security.

Architettura di Crittografia Fine-a-Fine

  1. Crittografia Fine-a-Fine (E2EE): Ogni bundle di aggiornamento viene crittografato utilizzando l'algoritmo AES-256-GCM prima di lasciare il tuo ambiente di sviluppo. Questa crittografia di livello militare assicura che gli aggiornamenti del tuo'applicazione rimangano completamente privati e sicuri per tutto il processo di consegna.

  2. Architettura di Conoscenza Zero: Unlike other OTA update solutions that only sign updates, Capgo employs true zero-knowledge encryption. This means:

    • Gli aggiornamenti dei contenuti sono crittografati prima dell'upload
    • Capgo servers only store encrypted data
    • La decrittografia avviene solo sulle dispositivi degli utenti finali
    • Nessun intermediario può accedere ai contenuti degli aggiornamenti
  3. Gestione delle Chiavi Sicure:

    • Il generatore e lo storage delle chiavi di crittografia avvengono in modo sicuro nel tuo ambiente CI/CD
    • Private keys never touch Capgo’s servers
    • Ogni versione dell'applicazione può utilizzare chiavi di crittografia uniche
    • Sostegno alla rotazione delle chiavi per una maggiore sicurezza

Scopri di più sul nostro sistema di crittografia nella nostra guida dettagliata: Crittografia End-to-End in Capgo Live Updates

Procedura di aggiornamento della sicurezza

  1. Crittografia pre-caricamento:

    • Gli aggiornamenti sono crittografati nella tua pipeline CI/CD
    • Ogni file è crittografato individualmente
    • I metadati sono anche crittografati per una completa privacy
  2. Archiviazione sicura:

    • Gli archivi crittografati sono archiviati sul CDN globale di Capgo
    • Non ci sono dati in chiaro che mai toccano i nostri server
    • Anche nel caso di violazione del server, i dati rimangono sicuri
  3. Consegna Sicura:

    • Gli aggiornamenti vengono consegnati attraverso canali crittografati
    • Ogni istanza dell'applicaazione verifica l'integrità della crittografia
    • Meccanismi di riprova automatici per la decrittografia fallita
  4. Sicurezza Client-Side:

    • Gli aggiornamenti vengono verificati prima dell'installazione
    • La decrittografia fallita attiva il rollback automatico
    • La memorizzazione sicura delle chiavi nel storage protetto dell'app

Questa approccio di sicurezza complessivo garantisce che gli aggiornamenti delle tue app rimangano protetti contro:

  • Attacchi man-in-the-middle
  • Violazioni del server
  • Modifiche non autorizzate
  • Attacchi di replay
  • Manipolazione del contenuto

Ciclo di aggiornamento

Capgo’s processo di aggiornamento è progettato per essere automatico di default. Ecco come funziona il processo automatico:

1. Controllo automatico dell'aggiornamento

Il plugin controlla automaticamente gli aggiornamenti nelle seguenti situazioni:

  • Quando l'applicazione si avvia

Questo comportamento è controllato dalla autoUpdate impostazione:

// capacitor.config.json
{
  "plugins": {
    "CapacitorUpdater": {
      "autoUpdate": true // Enable automatic updates
    }
  }
}

Potete anche controllare manualmente con getLatest()

2. Download automatico

When viene rilevata una nuova versione, se autoUpdate è abilitato:

  1. Comincia il download automaticamente
  2. La progressione viene tracciata internamente
  3. I download falliti si riprovano automaticamente all'apertura dell'app
  4. I download riusciti vengono memorizzati nel storage dell'app

Potete monitorare questo processo attraverso gli eventi:

CapacitorUpdater.addListener('download', (info: DownloadEvent) => {
  console.log('Auto-download progress:', info.percent);
});

CapacitorUpdater.addListener('downloadComplete', (info: DownloadCompleteEvent) => {
  console.log('Auto-download complete:', info.bundle);
});

3. Installazione automatica

La tempistica dell'installazione dipende dalla vostra configurazione:

// capacitor.config.json
{
  "plugins": {
    "CapacitorUpdater": {
      "autoUpdate": true,
      "directUpdate": false // install update on app backgrounding
      "resetWhenUpdate": true, // reset live updates on native update (true by default)
      "autoDeleteFailed": true, // Auto cleanup failed updates (true by default)
      "autoDeletePrevious": true // Auto cleanup old versions (true by default)
    }
  }
}

L'installazione avviene:

  • Subito se directUpdate è vero
  • Quando l'applicazione viene messa in background directUpdate è falso
  • Rollback automatico se l'installazione fallisce

Il plugin gestisce anche lo storage:

  • Rimuove gli aggiornamenti falliti se autoDeleteFailed è vero
  • Pulisci le versioni vecchie se autoDeletePrevious è vero

Aggiornamenti differiti

Puoi controllare quando gli aggiornamenti vengono installati utilizzando le condizioni di ritardo:

// Delay until app goes to background
await CapacitorUpdater.setDelay({
  kind: 'background'
});

// Delay until specific date
await CapacitorUpdater.setDelay({
  kind: 'date',
  value: '2024-03-20T10:00:00.000Z'
});

// Delay until next native version
await CapacitorUpdater.setDelay({
  kind: 'nativeVersion'
});

// Multiple conditions
await CapacitorUpdater.setMultiDelay({
  delayConditions: [
    {
      kind: 'background'
    },
    {
      kind: 'date',
      value: '2024-03-20T10:00:00.000Z'
    }
  ]
});

Condizioni di ritardo disponibili:

  • background: Installare quando l'app va in background
  • data: Installare dopo una data specifica/ora
  • versione nativa: Installare dopo l'aggiornamento nativo successivo
  • uccidere: Installare dopo che l'app è stata uccisa

Questo è utile per:

  • Pianificare gli aggiornamenti durante le ore di punta
  • Coordinare gli aggiornamenti con l'attività dell'utente
  • Assicurare un'esperienza di aggiornamento liscia
  • Prevenire interruzioni durante compiti critici

Stati dell'aggiornamento

Ecco come funzionano gli aggiornamenti in tempo reale per Capacitor:

  1. scaricamento: In corso di download
  2. in attesa: Download completato, in attesa dell'installazione
  3. completato: Aggiornamento installato e attivo
  4. errore: Aggiornamento fallito (attiva il rollback automatico)

Conformità della Store

App Store di Apple ✅

Aggiornamenti in tempo reale sono pienamente conformi alle politiche dell'App Store di Apple. Come stabilito nel Licenza di sviluppatore di Apple Programma Agreement:

“Interpretato code può essere scaricato in un'applicazione, ma solo a condizione che tale code: (a) non cambi lo scopo principale dell'applicazione fornendo funzionalità o caratteristiche che sono in conflitto con lo scopo e l'annuncio di pubblicità dell'applicazione come inviata all'App Store, (b) non crei un negozio o un negozio per altre code o applicazioni, e (c) non bypassi la firma, il sandbox o altre funzionalità di sicurezza del sistema operativo.”

Aggiornamenti Capgo modificano solo la layer web, rispettando tutti i confini di sicurezza della piattaforma.

Google Play Store ✅

Gli Aggiornamenti in tempo reale sono conformi alle politiche di Google Play. La politica di abuso di dispositivi e reti specifica:

“Questa restrizione non si applica a code che esegue in una macchina virtuale o un interprete dove uno fornisce accesso indiretto alle API Android (ad esempio JavaScript in un webview o browser).”

Poiché Capgo aggiorna solo il contenuto di WebView, rientra in queste linee guida permessi.

Pratiche consigliate

  1. Rollout fasi: Esegui aggiornamenti gradualmente
  2. Controllo delle versioni: Traccia tutte le versioni distribuite
  3. Supporto di rollback: Ripristino rapido da problemi
  4. Aggiornamenti Deltacontext: Pagina/Area: Pagina prodotti di aggiornamento in tempo reale. Ruolo: Intestazione di sezione o pagina. Chiave di messaggio `live_update_delta_title` (Titolo Aggiornamento in Tempo Reale Delta).

: Scarica solo i file modificati

Quando utilizzare gli Aggiornamenti in Tempo Reale

  • Idoneo per:
  • Correzioni di bug
  • Miglioramenti dell'interfaccia utente
  • Aggiornamenti del contenuto

Abilitazione di toggle di feature

  • Native code changes
  • Aggiornamenti di versione principale
  • Patch di sicurezza che richiedono modifiche native

Continua da Come funzionano gli aggiornamenti in vivo in Capgo

Se stai utilizzando Come funzionano gli aggiornamenti in vivo in Capgo per pianificare il lavoro sui plugin nativi, connettilo con Capgo Directory dei plugin per il flusso di lavoro del prodotto in Capgo Directory dei plugin, Capacitor Plugin da Capgo per i dettagli di implementazione in Capacitor Plugin da Capgo, Aggiungere o aggiornare i plugin per i dettagli di implementazione in Aggiungere o aggiornare i plugin, Illicon Enterprise Plugin Alternatives per il flusso di lavoro del prodotto in Illicon Enterprise Plugin Alternatives, e Capgo Costruzioni native per il flusso di lavoro del prodotto in Capgo Costruzioni native.

Gli aggiornamenti in tempo reale per le app di Capacitor

Quando un bug nel layer web è attivo, invia la correzione attraverso Capgo invece di attendere giorni per l'approvazione del negozio. Gli utenti ricevono l'aggiornamento in background mentre le modifiche native rimangono nel normale percorso di revisione.

Sostegno Umano da Martin

Avvia Ora

Ultimi articoli dal nostro Blog

Capgo vi offre le migliori informazioni necessarie per creare un'app mobile davvero professionale.