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.

Come funzionano gli aggiornamenti in tempo reale in __CAPGO_KEEP_0__

Vediamo in profondità l'implementazione tecnica degli aggiornamenti in tempo reale in __CAPGO_KEEP_0__, capendo come funziona sotto la cappa per iOS e Android.

Martin Donadieu

How Live Updates Work in Capgo

Understanding Live Updates in Capgo

Content Marketer per aziende di sviluppo di applicazioni mobili di successo con Capacitor e imparare come implementare gli aggiornamenti in tempo reale in Capgo

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)

il sistema di aggiornamento in tempo reale di Capgo funziona sostituendo il layer web in esecuzione, poiché questi file non sono compilati nel binario dell'applicazione

Implementazione Tecnica

Percorsi Server in Capacitor

Capgo gestisce due percorsi critici:

  • Percorso Server Attuale: Indica file attualmente caricati nel WebView
  • Percorso del Server Successivo: Punti a file che si caricheranno alla prossima riavvio dell'applicazione

Impostazione Android

Sul sistema operativo Android, Capgo gestisce percorsi attraverso:

// 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();
}

Impostazione iOS

Sui dispositivi iOS, i percorsi sono gestiti attraverso:

// 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)
}

Misure di Sicurezza

Capgo implementa misure di sicurezza di livello militare attraverso l'encryption end-to-end, garantendo che le aggiornamenti dell'applicazione rimangano completamente sicuri dallo sviluppo alla distribuzione. Il nostro sistema di encryption va oltre la firma tradizionale code per fornire una vera sicurezza zero-conoscenza.

Architettura di Encryption End-to-End

  1. Encryption End-to-End (E2EE): Ogni bundle di aggiornamento viene encryptato utilizzando l'encryption AES-256-GCM prima di lasciare il tuo ambiente di sviluppo. Questa encryption di livello militare garantisce che gli aggiornamenti dell'applicazione rimangano completamente privati e sicuri per tutto il processo di consegna.

  2. Architettura di Sicurezza Zero-Conoscenza: A differenza di altre soluzioni di aggiornamento OTA che firmano solo gli aggiornamenti, Capgo utilizza una vera e propria crittografia a zero conoscenza. Ciò significa:

    • Il contenuto degli aggiornamenti viene crittografato prima dell'upload
    • Il server Capgo conservano solo dati crittografati
    • La decrittografia avviene solo sulle appare di fine utente
    • Nessun intermediario può accedere al contenuto degli aggiornamenti
  3. Gestione delle chiavi sicure:

    • Le chiavi di crittografia vengono generate e conservate in modo sicuro nel tuo ambiente CI/CD
    • Il chiavi private non toccano mai i server di Capgo
    • Ogni versione dell'app 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 a fine-utente in Capgo Live Updates

Processo di Aggiornamento della Sicurezza

  1. Encryptazione Pre-Upload:

    • Gli aggiornamenti sono crittografati nel tuo pipeline CI/CD
    • Ogni file è crittografato individualmente
    • Il metadati è anche crittografato per una privacy completa
  2. Archiviazione Sicura:

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

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

    • Le 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 esaustivo garantisce che gli aggiornamenti del tuo app rimangano protetti contro:

  • Attacchi man-in-the-middle
  • Breaches del lato server
  • Modifiche non autorizzate
  • Attacchi di replay
  • Manipolazioni del contenuto

Ciclo di vita degli aggiornamenti

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

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

  1. Inizia il download automaticamente
  2. Lo stato di avanzamento viene tracciato internamente
  3. Scarichi falliti si riprovano all'apertura di ogni app
  4. Scarichi 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
  • Al prossimo sfondo dell'app se directUpdate è falso
  • Rollo di auto-rollback se l'installazione fallisce

L'plugin gestisce anche automaticamente lo storage:

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

Posticipa gli Aggiornamenti

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: Installa quando l'app va in background
  • date: Installa dopo una data/ora specifica
  • nativeVersion: Installare dopo l'aggiornamento nativo successivo
  • kill: Installare dopo che l'app è stata chiusa

Questo è utile per:

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

Stati degli Aggiornamenti

Durante il processo automatico, i pacchetti passano attraverso questi stati:

  1. downloadando: Download in corso
  2. pending: Download completo, in attesa di installazione
  3. success: Aggiornamento installato e attivo
  4. error: Aggiornamento fallito (attiva il rollback automatico)

Store Compliance

Apple App Store

Le Aggiornamenti in tempo reale sono pienamente conformi alle politiche dell'Apple App Store. Come stabilito nel Apple Developer Program License Agreement:

“I file di interpretazione code possono essere scaricati in un'applicazione, ma solo se tali code: (a) non modificano lo scopo principale dell'applicazione fornendo funzionalità o caratteristiche che sono in contrasto con lo scopo e la pubblicità dell'applicazione come presentata all'App Store, (b) non creano un negozio o una vetrina per altre code o applicazioni, e (c) non bypassano la firma, il sandbox o altre funzionalità di sicurezza del sistema operativo.”

Gli aggiornamenti Capgo modificano solo la layer web, rispettando tutti i confini di sicurezza del sistema.

Google Play Store

Aggiornamenti in tempo reale rispettano le politiche di Google Play. La politica di abuso del dispositivo e della rete specifica lo stato:

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

Dato che Capgo aggiorna solo il contenuto di WebView, rientra in queste linee guida consentite.

Pratiche consigliate

  1. Rollout fasi: Esegui aggiornamenti gradualmente
  2. Gestione versionicontext
  3. Page/area: Sito web di marketing Capgo. Ruolo: Etichetta di navigazione o elemento UI breve. Chiave messaggio `version_control` (Gestione versioni).: Traccia tutte le versioni distribuite
  4. Supporto rollback: Recupero rapido da problemi

When da usare gli aggiornamenti in tempo reale

Adatto per:

  • Correzioni di bug
  • Miglioramenti dell'interfaccia utente
  • Aggiornamenti del contenuto
  • Abilitazione di feature

Non adatto per:

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

Continua da Come funzionano gli aggiornamenti in tempo reale in Capgo

Se stai utilizzando How Funziona l'Aggiornamento in Tempo Reale in Capgo per pianificare il lavoro dei 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, Sostituti dei Plugin Enterprise Ionic per il flusso di lavoro del prodotto in Sostituti dei Plugin Enterprise Ionic, e Capgo Costruzioni Native per il flusso di lavoro del prodotto in Capgo Costruzioni Native.

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 della store. Gli utenti ricevono l'aggiornamento in background mentre le modifiche native rimangono nel normale percorso di revisione.

supporto umano da Martin

Inizia subito

Ultimi articoli dal nostro Blog

Capgo ti offre le migliori informazioni che ti servono per creare un'app mobile veramente professionale.