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:
- 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)
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
-
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.
-
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
-
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
-
Encryptazione Pre-Upload:
- Gli aggiornamenti sono crittografati nel tuo pipeline CI/CD
- Ogni file è crittografato individualmente
- Il metadati è anche crittografato per una privacy completa
-
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
-
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
-
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:
- Inizia il download automaticamente
- Lo stato di avanzamento viene tracciato internamente
- Scarichi falliti si riprovano all'apertura di ogni app
- 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:
- downloadando: Download in corso
- pending: Download completo, in attesa di installazione
- success: Aggiornamento installato e attivo
- 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
- Rollout fasi: Esegui aggiornamenti gradualmente
- Gestione versionicontext
- 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
- 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.