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:
- Layer Web: Contiene file HTML, CSS e JavaScript caricati nel WebView
- 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
-
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.
-
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
-
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
-
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
-
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
-
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
-
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:
- Comincia il download automaticamente
- La progressione viene tracciata internamente
- I download falliti si riprovano automaticamente all'apertura dell'app
- 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:
- scaricamento: In corso di download
- in attesa: Download completato, in attesa dell'installazione
- completato: Aggiornamento installato e attivo
- 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
- Rollout fasi: Esegui aggiornamenti gradualmente
- Controllo delle versioni: Traccia tutte le versioni distribuite
- Supporto di rollback: Ripristino rapido da problemi
- 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.