Live Updates in Capgo verstehen
Capacitor Live Updates (OTA) ersetzt das Web-Bundle in deiner App, sodass du JavaScript-, HTML- und CSS-Änderungen ohne ein neues Store-Binary ausliefern kannst. Live Updates sind eines der mächtigsten Features in Capacitor Apps und ermöglichen Echtzeit-Updates ohne App-Store-Einreichung. Schauen wir uns im Detail an, wie Capgo diese Funktionalität umsetzt.
Kernkonzepte
Eine Capacitor App besteht aus zwei Hauptebenen:
- 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 die Web-Ebene zur Laufzeit ersetzt wird, da diese Dateien nicht in das App-Binary kompiliert werden.
Technische Implementierung
Server-Pfade in Capacitor
Capgo verwaltet zwei kritische Pfade:
- Aktueller Server-Pfad: Verweist auf die aktuell in der WebView geladenen Dateien
- Nächster Server-Pfad: 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 werden die Pfade verwaltet ü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 setzt auf höchste Sicherheitsstandards durch End-to-End-Verschlüsselung. So bleiben deine App-Updates von der Entwicklung bis zum Deployment absolut sicher. Unser Verschlüsselungssystem geht über herkömmliches code Signing hinaus und bietet echte Zero-Knowledge-Sicherheit.
End-to-End-Verschlüsselungsarchitektur
-
End-to-End-Verschlüsselung (E2EE): Jedes Update-Bundle wird mittels AES-256-GCM verschlüsselt, bevor es deine Entwicklungsumgebung verlässt. Diese Verschlüsselung garantiert, dass deine App-Updates während des gesamten Delivery-Prozesses 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 berühren niemals die Capgo-Server
- Jede App-Version kann eigene Verschlüsselungsschlüssel nutzen
- Key Rotation für erhöhte Sicherheit
Erfahre mehr über unser Verschlüsselungssystem in unserem Guide: End-to-End-Verschlüsselung in Capgo Live Updates
Sicherheitsprozess der 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
- Selbst bei einem Server-Breach bleiben die Daten 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 bleiben:
- Man-in-the-middle-Angriffen
- Server-seitigen Breaches
- Unbefugten Modifikationen
- Replay-Attacks
- Content Tampering
Update-Lifecycle
Der Update-Prozess von Capgo ist standardmäßig auf Automatik 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
}
}
}
Du kannst auch manuell prüfen mit getLatest()
2. Automatischer Download
Wird eine neue Version erkannt und autoUpdate ist aktiviert:
- Startet der Download automatisch
- Der Fortschritt wird intern verfolgt
- 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
directUpdateist true - Beim nächsten Wechsel in den Hintergrund, wenn
directUpdatefalse ist - Auto-Rollback bei fehlgeschlagener Installation
Das Plugin verwaltet den Speicher automatisch:
- Fehlgeschlagene Updates werden entfernt, wenn
autoDeleteFailedist true - Alte Versionen werden bereinigt, wenn
autoDeletePreviousist true
Updates verzögern
Mit Delay-Bedingungen steuerst du die Installation von Updates:
// 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 Delay-Bedingungen:
- Hintergrund: Installation, wenn die App in den Hintergrund geht
- Datum: Installation nach einem bestimmten Datum/Uhrzeit
- nativeVersion: Nach dem nächsten Native Build installieren
- kill: Nach dem Schließen der App installieren
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
- ausstehend: Download abgeschlossen, Installation wartet
- erfolgreich: Update installiert und aktiv
- fehler: Update fehlgeschlagen (Auto-Rollback wird ausgelöst)
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:
„Interpretierte code dürfen in eine App heruntergeladen werden, aber nur, solange diese code: (a) nicht den Hauptzweck der App ändert, indem sie Funktionen bereitstellt, die nicht dem beabsichtigten und beworbenen Zweck der im App Store eingereichten App entsprechen, (b) keinen Store oder Storefront für andere code oder Apps erstellt und (c) die Signierung, das Sandboxing 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 konkret:
„Diese Einschränkung gilt nicht für code, der in einer virtuellen Maschine oder einem Interpreter läuft, wenn eines von beiden indirekten Zugriff auf Android-APIs bietet (z. B. JavaScript in einer WebView oder einem Browser).“
Da Capgo nur den WebView-Content aktualisiert, liegt dies innerhalb der 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 man Live Updates nutzt
Ideal für:
- Bugfixes
- UI-Verbesserungen
- Content-Updates
- Feature Toggles
Nicht geeignet für:
- Native code Änderungen
- Major-Version-Updates
- Security Patches mit nativen Änderungen
Weiterlesen: Wie Live Updates in Capgo funktionieren
Wenn Sie ... verwenden So funktionieren Capgo Live Updates um die Arbeit an Native Plugins zu planen, verbinde es mit Capgo Plugin-Verzeichnis für den Produkt-Workflow im Capgo Plugin-Verzeichnis, Capacitor Plugins von Capgo für die Implementierungsdetails in Capacitor Plugins von Capgo, Plugins hinzufügen oder aktualisieren für die Implementierungsdetails in Adding or Updating Plugins, Ionic Enterprise Plugin-Alternativen für den Produkt-Workflow in Ionic Enterprise Plugin Alternatives und Capgo Native Builds für den Produkt-Workflow in Capgo Native Builds.