Verständnis von Live-Updates in Capgo
Live-Updates sind eine der leistungsstärksten Funktionen in Capacitor-Apps, die Echtzeit-Updates ohne Einreichung im App Store ermöglichen. Lassen Sie uns tief in die Funktionsweise von Capgo eintauchen.
Grundkonzepte
Eine Capacitor-App besteht aus zwei Hauptschichten:
- Web-Schicht: Beinhaltet HTML-, CSS- und JavaScript-Dateien, die im WebView geladen werden
- Native Schicht: Beinhaltet plattform-spezifischen Code (Java/Kotlin für Android, Swift für iOS)
Das Live-Update-System von Capgo funktioniert, indem es die Web-Schicht zur Laufzeit ersetzt, da diese Dateien nicht in die App-Binärdatei kompiliert werden.
Technische Umsetzung
Server-Pfade in Capacitor
Capgo verwaltet zwei kritische Pfade:
- Aktueller Server-Pfad: Zeigt auf Dateien, die derzeit im WebView geladen sind
- Nächster Server-Pfad: Zeigt auf Dateien, die beim nächsten Neustart der App geladen werden
Android-Umsetzung
Auf Android verwaltet Capgo die Pfade durch:
// Store next server pathprivate 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 reloadprivate void setCurrentCapacitorServerPath(String path) { bridge.setServerBasePath(path); bridge.reload();}
iOS-Umsetzung
Auf iOS werden die Pfade durch:
// Store next server pathprivate func setNextCapacitorServerPath(path: String) { KeyValueStore.standard["serverBasePath"] = path}
// Update current pathprivate func setCurrentCapacitorServerPath(path: String) { bridge.viewController.setServerBasePath(path: path)}
Sicherheitsmaßnahmen
Capgo implementiert militärische Sicherheitsstandards durch End-to-End-Verschlüsselung, um sicherzustellen, dass Ihre App-Updates während der gesamten Entwicklung bis zur Bereitstellung vollständig sicher bleiben. Unser Verschlüsselungssystem geht über traditionelle Code-Signierungen hinaus, um eine echte Null-Wissen-Sicherheit zu bieten.
Architektur der End-to-End-Verschlüsselung
-
End-to-End-Verschlüsselung (E2EE): Jedes Update-Paket wird vor dem Verlassen Ihrer Entwicklungsumgebung mit AES-256-GCM-Verschlüsselung verschlüsselt. Diese militärische Verschlüsselung stellt sicher, dass Ihre App-Updates während des gesamten Bereitstellungsprozesses vollständig privat und sicher bleiben.
-
Null-Wissen-Architektur: Im Gegensatz zu anderen OTA-Update-Lösungen, die nur Updates signieren, verwendet Capgo eine echte Null-Wissen-Verschlüsselung. Das bedeutet:
- Update-Inhalte werden vor dem Hochladen verschlüsselt
- Capgo-Server speichern nur verschlüsselte Daten
- Die Entschlüsselung erfolgt nur auf den Endgeräten der Benutzer
- Kein Zwischenhändler kann auf Ihre Update-Inhalte zugreifen
-
Sichere Schlüsselverwaltung:
- Verschlüsselungsschlüssel werden generiert und sicher in Ihrer CI/CD-Umgebung gespeichert
- Private Schlüssel berühren niemals die Server von Capgo
- Jede App-Version kann einzigartige Verschlüsselungsschlüssel verwenden
- Unterstützung für Schlüsselrotation zur Verbesserung der Sicherheit
Erfahren Sie mehr über unser Verschlüsselungssystem in unserem detaillierten Leitfaden: End-to-End-Verschlüsselung in Capgo Live-Updates
Prozess zur Updatesicherheit
-
Vor-Hochlade-Verschlüsselung:
- Updates werden in Ihrer CI/CD-Pipeline verschlüsselt
- Jede Datei wird einzeln verschlüsselt
- Metadaten werden ebenfalls für vollständige Privatsphäre verschlüsselt
-
Sichere Speicherung:
- Verschlüsselte Pakete werden auf Capgos globalem CDN gespeichert
- Keine Klartextdaten berühren jemals unsere Server
- Selbst im Falle eines Servervorfalls bleibt die Daten sicher
-
Sichere Lieferung:
- Updates werden über verschlüsselte Kanäle geliefert
- Jede App-Instanz überprüft die Integrität der Verschlüsselung
- Automatische Wiederholungsmechanismen für fehlgeschlagene Entschlüsselungen
-
Client-seitige Sicherheit:
- Updates werden vor der Installation verifiziert
- Fehlgeschlagene Entschlüsselungen lösen eine automatische Rückkehr aus
- Sichere Schlüssel Speicherung im geschützten Speicher der App
Dieser umfassende Sicherheitsansatz stellt sicher, dass Ihre App-Updates gegen Folgendes geschützt bleiben:
- Man-in-the-middle-Angriffe
- Server-seitige Angriffe
- Unbefugte Änderungen
- Replay-Angriffe
- Inhaltsmanipulation
Update-Lebenszyklus
Der Update-Prozess von Capgo ist standardmäßig auf automatisch ausgelegt. So funktioniert der automatische Prozess:
1. Automatische Update-Prüfung
Das Plugin überprüft automatisch auf Updates in diesen Situationen:
- Wenn die App startet
Dieses Verhalten wird durch die Einstellung autoUpdate
gesteuert:
// capacitor.config.json{ "plugins": { "CapacitorUpdater": { "autoUpdate": true // Enable automatic updates } }}
Sie können auch manuell mit getLatest()
überprüfen
2. Automatischer Download
Wenn eine neue Version erkannt wird, und autoUpdate
aktiviert ist:
- Der Download beginnt automatisch
- Der Fortschritt wird intern verfolgt
- Fehlgeschlagene Downloads werden bei jedem Öffnen der App automatisch erneut versucht
- Erfolgreiche Downloads werden im App-Speicher gespeichert
Sie können diesen Prozess über Ereignisse überwachen:
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. Automatische Installation
Der Zeitpunkt der Installation hängt von Ihrer Konfiguration ab:
// 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) } }}
Die Installation erfolgt:
- Sofort, wenn
directUpdate
wahr ist - Bei nächster Hintergrundaktivität der App, wenn
directUpdate
falsch ist - Automatische Rückkehr, wenn die Installation fehlschlägt
Das Plugin verwaltet auch automatisch den Speicher:
- Entfernt fehlgeschlagene Updates, wenn
autoDeleteFailed
wahr ist - Bereinigt alte Versionen, wenn
autoDeletePrevious
wahr ist
Verzögerung von Updates
Sie können steuern, wann Updates installiert werden, indem Sie Verzögerungsbedingungen verwenden:
// Delay until app goes to backgroundawait CapacitorUpdater.setDelay({ kind: 'background'});
// Delay until specific dateawait CapacitorUpdater.setDelay({ kind: 'date', value: '2024-03-20T10:00:00.000Z'});
// Delay until next native versionawait CapacitorUpdater.setDelay({ kind: 'nativeVersion'});
// Multiple conditionsawait CapacitorUpdater.setMultiDelay({ delayConditions: [ { kind: 'background' }, { kind: 'date', value: '2024-03-20T10:00:00.000Z' } ]});
Verfügbare Verzögerungsbedingungen:
- background: Installieren, wenn die App in den Hintergrund geht
- date: Installieren nach einem bestimmten Datum/Zeit
- nativeVersion: Installieren nach dem nächsten nativen Update
- kill: Installieren, nachdem die App beendet wurde
Dies ist nützlich für:
- Planung von Updates während der Nebensaison
- Koordination von Updates mit der Benutzeraktivität
- Sicherstellung eines reibungslosen Update-Erlebnisses
- Vermeidung von Störungen während kritischer Aufgaben
Update-Zustände
Während des automatischen Prozesses wechseln Pakete durch diese Zustände:
- downloading: Download im Gange
- pending: Download abgeschlossen, wartet auf Installation
- success: Update installiert und aktiv
- error: Update fehlgeschlagen (löst automatische Rückkehr aus)
Store-Konformität
Apple App Store ✅
Live-Updates sind vollständig konform mit den Richtlinien des Apple App Store. Wie im Lizenzvertrag des Apple Developer Programms angegeben:
“Interpretierter Code darf in eine Anwendung heruntergeladen werden, jedoch nur solange, solange dieser Code: (a) nicht den Hauptzweck der Anwendung ändert, indem er Funktionen oder Funktionalitäten bereitstellt, die nicht mit dem beabsichtigten und beworbenen Zweck der Anwendung übereinstimmen, wie sie im App Store eingereicht wurde, (b) keinen Store oder Marktplatz für anderen Code oder Anwendungen erstellt, und (c) keine Signierungs-, Sandbox- oder andere Sicherheitsmerkmale des Betriebssystems umgeht.”
Capgo-Updates ändern nur die Web-Schicht und respektieren alle plattform-spezifischen Sicherheitsgrenzen.
Google Play Store ✅
Live-Updates stehen im Einklang mit den Richtlinien von Google Play. Die Richtlinie für Geräte- und Netzwerkmissbrauch besagt ausdrücklich:
“Diese Einschränkung gilt nicht für Code, der in einer virtuellen Maschine oder einem Interpreter ausgeführt wird, wo entweder einen indirekten Zugriff auf Android-APIs bereitstellt (z. B. JavaScript in einem WebView oder Browser).”
Da Capgo nur den Inhalt des WebView aktualisiert, fällt es innerhalb dieser erlaubten Richtlinien.
Best Practices
- Phasierte Bereitstellungen: Updates schrittweise bereitstellen
- Versionskontrolle: Alle bereitgestellten Versionen verfolgen
- Rückfallunterstützung: Schnelle Wiederherstellung von Problemen
- Delta-Updates: Nur geänderte Dateien herunterladen
Wann Live-Updates verwenden
Ideal für:
- Fehlerbehebungen
- UI-Verbesserungen
- Inhaltsaktualisierungen
- Funktionsumschaltungen
Nicht geeignet für:
- Änderungen am nativen Code
- Größere Versionsupdates
- Sicherheitspatches, die nativen Änderungen erfordern