Live Updates in Capgo verstehen
Capacitor Live Updates (OTA) ersetzt das Web-Bundle in deiner App, sodass du JavaScript-, HTML- und CSS-Änderungen ohne neues Store-Binary ausrollen kannst. Live Updates sind eines der mächtigsten Features in Capacitor-Apps und ermöglichen Echtzeit-Updates ohne App-Store-Submission. Schauen wir uns genau an, wie Capgo diese Funktionalität implementiert.
Kernkonzepte
Eine Capacitor-App besteht aus zwei Hauptschichten:
- Web-Layer: Enthält HTML-, CSS- und JavaScript-Dateien, die im WebView geladen werden
- Native Layer: Enthält plattformspezifisches code (Java/Kotlin für Android, Swift für iOS)
Das live update-System von Capgo funktioniert, indem es die Web-Ebene zur Laufzeit ersetzt, da diese Dateien nicht in das App-Binary kompiliert werden.
Technische Umsetzung
Server-Pfade in Capacitor
Capgo verwaltet zwei kritische Pfade:
- Aktueller Server-Pfad: Verweist auf die aktuell in der WebView geladenen Dateien
- Nächster Serverpfad: Verweist auf die Dateien, die beim nächsten App-Neustart geladen werden
Android-Implementierung
Unter Android verwaltet Capgo die Pfade über:
// 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();
}
iOS-Implementierung
Unter iOS läuft die Pfadverwaltung über:
// 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)
}
Sicherheitsmaßnahmen
Capgo bietet Sicherheit auf Militärniveau durch End-to-End-Verschlüsselung und sorgt dafür, dass deine App-Updates von der Entwicklung bis zum Deployment absolut sicher bleiben. Unser Verschlüsselungssystem geht über herkömmliche code-Signierung hinaus und bietet echte Zero-Knowledge-Sicherheit.
End-to-End-Verschlüsselungsarchitektur
-
End-to-End-Verschlüsselung (E2EE): Jedes Update-Bundle wird mit AES-256-GCM verschlüsselt, bevor es deine Entwicklungsumgebung verlässt. Diese Verschlüsselung auf Militärniveau stellt sicher, dass deine App-Updates während des gesamten Auslieferungsprozesses absolut privat und sicher bleiben.
-
Zero-Knowledge-Architektur: Im Gegensatz zu anderen OTA-Update-Lösungen, die Updates lediglich signieren, nutzt Capgo echte Zero-Knowledge-Verschlüsselung. Das bedeutet:
- Update-Inhalte werden vor dem Upload verschlüsselt
- Capgo-Server speichern nur verschlüsselte Daten
- Die Entschlüsselung erfolgt ausschließlich auf den Endgeräten
- Kein Vermittler kann auf deine Update-Inhalte zugreifen
-
Sicheres Key Management:
- Verschlüsselungsschlüssel werden sicher in deiner CI/CD-Umgebung generiert und gespeichert
- Private Keys gelangen nie auf die Server von Capgo
- Jede App-Version kann eigene Verschlüsselungsschlüssel nutzen
- Key-Rotation-Unterstützung für mehr Sicherheit
Erfahre mehr über unser Verschlüsselungssystem in unserem ausführlichen Guide: End-to-End-Verschlüsselung in Capgo Live Updates
Sicherheitsprozess für Updates
-
Verschlüsselung vor dem Upload:
- Updates werden in deiner CI/CD-Pipeline verschlüsselt
- Jede Datei wird einzeln verschlüsselt
- Metadaten werden für volle Privatsphäre ebenfalls verschlüsselt
-
Sichere Speicherung:
- Verschlüsselte Bundles liegen auf dem globalen CDN von Capgo
- Keine Klartextdaten gelangen jemals auf unsere Server
- Daten bleiben selbst bei Server-Breaches sicher
-
Sichere Auslieferung:
- Updates werden über verschlüsselte Kanäle ausgeliefert
- Jede App-Instanz validiert die Verschlüsselung
- Automatischer Retry bei fehlgeschlagener Entschlüsselung
-
Clientseitige Sicherheit:
- Updates werden vor der Installation verifiziert
- Fehlgeschlagene Entschlüsselung löst Rollback aus
- Sichere Key-Speicherung im geschützten App-Speicher
Dieser umfassende Sicherheitsansatz stellt sicher, dass Ihre App-Updates vor Folgendem geschützt sind:
- Man-in-the-middle-Angriffen
- Server-seitigen Breaches
- Unbefugte Änderungen
- Replay-Angriffe
- Inhaltsmanipulation
Update-Lifecycle
Der Update-Prozess von Capgo ist standardmäßig auf Automatisierung ausgelegt. So funktioniert der automatische Prozess:
1. Automatischer Update-Check
Das Plugin prüft in folgenden Situationen automatisch auf Updates:
- Beim App-Start
Dieses Verhalten wird über die autoUpdate setting:
// capacitor.config.json
{
"plugins": {
"CapacitorUpdater": {
"autoUpdate": true // Enable automatic updates
}
}
}
Manuell kannst du auch mit getLatest()
2. Automatischer Download
Wird eine neue Version erkannt, falls autoUpdate ist aktiviert:
- Download startet automatisch
- Fortschritt wird intern getrackt
- Failed downloads auto-retry at each app open
- Erfolgreiche Downloads werden im App-Speicher abgelegt
Diesen Prozess kannst du über Events ü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 deiner 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
directUpdatetrue ist - Beim nächsten Hintergrundwechsel der App, wenn
directUpdatefalsch ist - Auto-Rollback bei fehlgeschlagener Installation
Das Plugin verwaltet auch automatisch den Speicher:
- Fehlgeschlagene Updates entfernen, wenn
autoDeleteFailedwahr ist - Alte Versionen bereinigen, wenn
autoDeletePreviouswahr ist
Updates verzögern
Du kannst über Verzögerungsbedingungen steuern, wann Updates installiert werden:
// 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'
}
]
});
Verfügbare Verzögerungsbedingungen:
- Hintergrund: Installation, wenn die App in den Hintergrund geht
- Datum: Installation nach einem bestimmten Datum/Uhrzeit
- nativeVersion: Installation nach dem nächsten Native Build
- kill: Installation, nachdem die App beendet wurde
Das ist nützlich für:
- Geplante Updates außerhalb der Stoßzeiten
- Abstimmung von Updates mit der Nutzeraktivität
- Reibungslose Updates gewährleisten
- Vermeidung von Unterbrechungen bei kritischen Aufgaben
Update-Status
Während des automatischen Prozesses durchlaufen Bundles diese Zustände:
- downloading: Download läuft
- pending: Download fertig, wartet auf Installation
- Erfolgreich: Update installiert und aktiv
- error: Update fehlgeschlagen (löst Auto-Rollback aus)
Store-Compliance
Apple App Store ✅
Live Updates sind vollständig konform mit den Richtlinien des Apple App Store. Wie im Apple Developer Program License Agreement festgelegt:
„Interpretierter code darf in eine App heruntergeladen werden, sofern dieser code: (a) nicht den Hauptzweck der App ändert, indem Funktionen bereitgestellt werden, die nicht dem vorgesehenen und beworbenen Zweck der im App Store eingereichten App entsprechen, (b) keinen Store oder Storefront für andere code oder Apps erstellt und (c) das Code-Signing, die Sandbox oder andere Sicherheitsfunktionen des OS nicht umgeht.“
Capgo Updates ändern nur den Web-Layer und respektieren dabei alle Sicherheitsgrenzen der Plattform.
Google Play Store ✅
Live Updates entsprechen den Google Play Richtlinien. Die Richtlinie zu Device and Network Abuse besagt explizit:
„Diese Einschränkung gilt nicht für code, das in einer virtuellen Maschine oder einem Interpreter läuft, wenn eines von beiden indirekten Zugriff auf Android APIs bietet (wie JavaScript in einer WebView oder einem Browser).“
Da Capgo nur den WebView-Content aktualisiert, fällt dies unter die erlaubten Richtlinien.
Best Practices
- Phasenweise Rollouts: Updates schrittweise ausrollen
- Versionskontrolle: Alle deployten Versionen tracken
- Rollback-Support: Schnelle Fehlerbehebung
- Delta-Updates: Nur geänderte Dateien downloaden
Wann Live Updates sinnvoll sind
Ideal für:
- Bugfixes
- UI-Verbesserungen
- Content-Updates
- Feature Toggles
Nicht geeignet für:
- Native code-Änderungen
- Major-Version-Updates
- Security-Patches, die native Änderungen erfordern
Weiterlesen: Wie Live Updates in Capgo funktionieren
Wenn du es nutzt So funktionieren Live Updates in Capgo Um die Arbeit an nativen Plugins zu planen, verbinde sie mit Capgo Plugin-Verzeichnis für den Produkt-Workflow im Capgo Plugin-Verzeichnis, Capacitor Plugins von Capgo für das Implementierungsdetail in Capacitor Plugins von Capgo, Plugins hinzufügen oder aktualisieren für die Implementierungsdetails unter „Plugins hinzufügen oder aktualisieren“, Ionic Enterprise Plugin-Alternativen für den Produkt-Workflow in Ionic Enterprise Plugin-Alternativen und Capgo Native Builds optimieren für den Produkt-Workflow in Capgo Native Builds.