Saltare al contenuto principale

Come funziona l'aggiornamento in tempo reale in Capgo

Scopriamo a fondo l'implementazione tecnica degli aggiornamenti in tempo reale in Capgo, comprendendo come funziona sotto la cappa per iOS e Android.

Crediti dell'articolo

Martin Donadieu

Autore

Valeria

Recensore

Jordan

Editore

Come funziona l'aggiornamento in tempo reale in 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 sottoscrizioni negli store app. Lasciamo che ci addentriamo nel modo in cui 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 specifici della piattaforma (Java/Kotlin per Android, Swift per iOS)

Capgo’s live update system works by replacing the web layer at runtime, as these files aren’t compiled into the app binary.

Implementazione Tecnica

Periferiche del Server in Capacitor

Capgo gestisce due percorsi critici:

  • Percorso Server Attuale: Indica i file attualmente caricati in WebView
  • Percorso Server Successivo: Indica i file che caricheranno all'avvio successivo dell'applicazione

Implementazione per Android

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

Implementazione per iOS

On 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 tue aggiornamenti 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 i tuoi aggiornamenti 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 solo firmano gli aggiornamenti, Capgo utilizza una vera encryption zero-conoscenza. Ciò significa:

    • Contenuti degli aggiornamenti sono encryptati prima dell'upload
    • Server Capgo conservano solo dati encryptati
    • La crittografia avviene solo sul dispositivo dell'utente finale
    • Nessun intermediario può accedere al contenuto degli aggiornamenti
  3. Amministrazione delle chiavi sicure:

    • Il chiave di crittografia vengono generate e archiviate 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 univoche
    • 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

Processo di aggiornamento della sicurezza

  1. Crittografia pre-caricamento:

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

    • I pacchetti crittografati sono memorizzati sul CDN globale di Capgo
    • Nessun testo di testo puro tocca mai i nostri server.
    • La sicurezza dei dati rimane anche in caso di violazione dei server
  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. Sicurezza Client-Side:

    • Aggiornamenti verificati prima dell'installazione
    • La decrittografia fallita attiva il rollback automatico
    • Memorizzazione sicura delle chiavi nel storage protetto dell'app

Questa approccio di sicurezza esaustivo assicura che le tue aggiornamenti dell'app rimangano protetti contro:

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

Ciclo di vita dell'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 in queste situazioni:

  • Quando l'app 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. Comincia il download automatico
  2. Lo stato di avanzamento viene tracciato internamente
  3. Failed downloads auto-retry at each app open
  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:

  • Immediately if directUpdate è vero
  • Se l'app viene messa in background directUpdate è falso
  • Auto-rollback se l'installazione fallisce

Il plugin gestisce anche automaticamente lo storage:

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

Sospensione degli Aggiornamenti

Potete controllare quando vengono installate le aggiornamenti 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: Installa dopo l'aggiornamento nativo successivo
  • kill: Installa dopo che l'app è stata uccisa

Questo è utile per:

  • Pianificare gli aggiornamenti durante le ore di punta
  • Coordinando gli aggiornamenti con l'attività dell'utente
  • Assicurando un'esperienza di aggiornamento liscia
  • Prevenendo interruzioni durante compiti critici

Stati degli Aggiornamenti

Ecco gli stati attraverso cui i bundle transitano durante il processo automatico:

  1. scaricando: Scaricamento in corso
  2. in attesa: Scaricamento completo, in attesa dell'installazione
  3. riconosciuto: Aggiornamento installato e attivo
  4. errore: Aggiornamento fallito (attiva il rollback automatico)

Conformità allo Store

Apple App Store

Gli Aggiornamenti Live sono pienamente conformi alle politiche dell'Apple App Store. Come stabilito nel Apple Developer Program License Agreement:

“I code interpretati possono essere scaricati in un'applicazione, ma solo se 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

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

“Questa restrizione non si applica ai code che eseguono in una macchina virtuale o un interprete che 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 consentite.

Pratiche Raccomandate

  1. Esecuzione Fase per Fase: Distribuisci aggiornamenti gradualmente
  2. Controllo delle versioni: Traccia tutte le versioni distribuite
  3. Sostegno al rollback: Recupero rapido da problemi
  4. Aggiornamenti delta: Scarica solo i file modificati

Quando utilizzare gli aggiornamenti in tempo reale

Idoneo per:

  • Correzioni di bug
  • Aggiornamenti dell'interfaccia utente
  • Aggiornamenti del contenuto
  • Funzionalità di toggle

Non adatto per:

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

Continua da Come funzionano gli aggiornamenti in tempo reale in Capgo

Se stai utilizzando Come funzionano gli aggiornamenti in tempo reale in Capgo per pianificare il lavoro sui plugin nativi, connettilo con Capgo Directory dei plugin per il workflow del prodotto nella Capgo Directory dei Plugin Capacitor Plugin di Capgo per i dettagli di implementazione in Capacitor Plugin da Capgo Aggiunta o Aggiornamento Plugin per i dettagli di implementazione in Aggiunta o Aggiornamento Plugin Alternative per Plugin Enterprise Ionic per il flusso di lavoro del prodotto nelle alternative del plugin Enterprise Ionic Capgo Costruzione Nativa per il flusso di lavoro del prodotto in Capgo Costruzione Nativa.

Aggiornamenti in tempo reale per le app 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 vi dà le migliori informazioni che avete bisogno per creare un'app mobile veramente professionale.