Live-Updates in Capgo verstehen
Live-Updates sind eine der mächtigsten Funktionen in Capacitor-Apps, die Echtzeit-Updates ohne App-Store-Submission ermöglichen. Lassen Sie uns tiefer in die Funktionsweise von Capgo eintauchen.
Grundlegende Konzepte
Ein Capacitor-App besteht aus zwei Hauptlagen:
- Web-Layer: Enthält HTML-, CSS- und JavaScript-Dateien, die im WebView geladen werden
- Native-Layer: Enthält plattform-spezifische code (Java/Kotlin für Android, Swift für iOS)
Capgo's Live-Update-System funktioniert, indem der Web-Layer bei Laufzeit ersetzt wird, da diese Dateien nicht in das App-Binärdatei kompiliert werden.
Technische Umsetzung
Server-Pfade in Capacitor
Capgo verwalten zwei kritische Pfade:
- aktuelle Server-Pfade: Verweist auf Dateien, die derzeit in der WebView geladen sind
- nächster Server-Pfade: Verweist auf Dateien, die bei der nächsten App-Neustart geladen werden
Android-Implementierung
Bei Android verwaltet Capgo Pfade durch:
// 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
Bei iOS werden Pfade durch:
// 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 implementiert militärisch-grade Sicherheit durch Ende-zu-Ende-Verschlüsselung, um sicherzustellen, dass Ihre App-Updates von der Entwicklung bis zur Bereitstellung vollständig sicher bleiben. Unsere Verschlüsselungssystem geht über traditionelle code-Signierung hinaus und bietet wahre Null-Wissens-Sicherheit.
End-to-End-Verschlüsselung-Architektur
-
End-to-End-Verschlüsselung (E2EE)Jede Aktualisierungs-Paket ist mit AES-256-GCM-Verschlüsselung vor dem Verlassen Ihres Entwicklungsumgebungen verschlüsselt. Diese militärisch-starken Verschlüsselung sichert, dass Ihre App-Updates während des gesamten Lieferprozesses vollständig privat und sicher bleiben.
-
Zero-Knowledge-ArchitekturIm Gegensatz zu anderen OTA-Update-Lösungen, die nur Updates signieren, verwendet Capgo echte Zero-Knowledge-Verschlüsselung. Das bedeutet:
- Die Aktualisierungs-Inhalte werden vor dem Upload verschlüsselt
- Capgo-Server speichern nur verschlüsselte Daten
- Die Entschlüsselung erfolgt nur auf den Endgeräten des Benutzers
- Kein Zwischenstück kann Ihren Aktualisierungs-Inhalt zugreifen
-
Sichere Schlüsselverwaltung:
- Die Verschlüsselungsschlüssel werden sicher in Ihrer CI/CD-Umgebung generiert und gespeichert
- Private Schlüssel berühren Capgo’s Server nie
- Jede App-Version kann eindeutige Verschlüsselungsschlüssel verwenden
- Unterstützung für Schlüsselrotation zur Erhöhung der Sicherheit
Erhalten Sie weitere Informationen über unser Verschlüsselungssystem in unserer detaillierten Anleitung: End-to-End-Verschlüsselung in Capgo Live Updates
Sicherheitsprozess bei Updates
-
Vor dem Upload-Verschlüsselung:
- Updates werden in Ihrem CI/CD-Pipeline verschlüsselt
- Jeder Datei wird einzeln verschlüsselt
- Die Metadaten werden ebenfalls verschlüsselt, um eine vollständige Privatsphäre zu gewährleisten
-
Sichere Speicherung:
- Verschlüsselte Pakete werden auf Capgo’s globalen CDN gespeichert
- Keine plain text-Daten berühren unsere Server
- Even bei einem Serverbruch bleibt die Daten sicher
-
Sichere Lieferung:
- Updates werden über verschlüsselte Kanäle geliefert
- Jedes App-Instanz überprüft die Integrität der Verschlüsselung
- Automatische Wiederholungsmechanismen für fehlgeschlagene Entschlüsselung
-
Client-Seitige Sicherheit:
- Updates werden vor der Installation überprüft
- Fehlgeschlagene Entschlüsselung löst automatische Rollover aus
- Sichere Schlüssel speichern in der geschützten Speicherung der App
Diese umfassende Sicherheitsstrategie stellt sicher, dass Ihre App-Updates vor folgenden Bedrohungen geschützt bleiben:
- Mann-im-Bezirk-Angriffe
- Serverseitige Brüche
- Unberechtigte Modifikationen
- Angriffe durch Wiedergabe
- Inhaltstampern
Update-Lebenszyklus
Capgos Update-Prozess ist standardmäßig automatisch konzipiert. Hier ist eine Beschreibung, wie der automatische Prozess funktioniert:
1. Automatischer Update-Check
Der Plugin überprüft automatisch Updates in folgenden Situationen:
- Wenn die App gestartet wird
Dieses Verhalten wird durch die autoUpdate Einrichtung gesteuert:
// capacitor.config.json
{
"plugins": {
"CapacitorUpdater": {
"autoUpdate": true // Enable automatic updates
}
}
}
Sie können auch manuell überprüfen, indem Sie getLatest()
2. Automatischer Download
Wenn eine neue Version erkannt wird, wenn autoUpdate ist aktiviert:
- Der Download startet automatisch
- Der Fortschritt wird intern verfolgt
- Bei fehlgeschlagenen Downloads wird automatisch wiederholt, wenn die App geöffnet wird
- Bei erfolgreichen Downloads werden die Daten in der App-Speicherung gespeichert
Sie können diesen Prozess über Events verfolgen:
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
Die Installation ist abhängig von Ihrer Konfiguration:
// 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:
- Unmittelbar, wenn
directUpdateist wahr - On die nächste App-Hintergrundverarbeitung wenn
directUpdateist falsch - Automatische Rückkehr wenn die Installation fehlschlägt
Das Plugin verwaltet auch die Speicherung automatisch:
- Entfernt fehlgeschlagene Updates wenn
autoDeleteFailedist wahr - Beseitigt alte Versionen wenn
autoDeletePreviousist wahr
Verzögert Updates
Sie können bestimmen, wann Updates installiert werden, indem Sie Verzögerungsbedingungen verwenden:
// 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: Install wenn App in Hintergrund geht
- : Datum: Install nach bestimmtem Datum/Uhrzeit
- : Install nach nächstem nativen Update: Install nach App-Beendigung
- : Install nach App-MordThis is useful for:
Scheduling updates während ruhiger Zeiten
- Koordinierung von Updates mit Benutzeraktivität
- Ein sicherer Update-Erlebnis sicherzustellen
- Verhindern von Störungen während kritischer Aufgaben
- Verhindern von Störungen während kritischer Aufgaben
Update Zustände
Während des automatischen Prozesses wechseln die Pakete durch diese Zustände:
- herunterladen: Herunterladen in Progress
- anwarten: Herunterladen abgeschlossen, Installieren warten
- erfolgreich: Update installiert und aktiv
- fehlerhaft: Update fehlgeschlagen (Ausfallrollback auslöst)
Store-Kompatibilität
Apple App Store
Live Updates entsprechen vollständig den Richtlinien des Apple App Store.
“Interpretierte code dürfen in eine Anwendung heruntergeladen werden, aber nur so lange, wie solche code: (a) die Hauptfunktion der Anwendung nicht ändern, indem sie Funktionen oder Features bereitstellt, die mit dem vorgesehenen und beworbenen Zweck der Anwendung im App Store nicht übereinstimmen, (b) keine Ladenplätze oder -verkaufsstellen für andere code oder Anwendungen erstellen und (c) die Signierung, Sandbox oder andere Sicherheitsfunktionen des Betriebssystems nicht umgehen.”
Capgo-Updates ändern nur die Web-Schicht, während alle Plattform-Sicherheitsgrenzen respektiert werden.
Google Play Store ✅
Live Updates entsprechen den Richtlinien des Google Play Stores. Insbesondere wird in der Richtlinie zum Geräte- und Netzwerkmissbrauch festgelegt:
“Diese Einschränkung gilt nicht für code, das in einer virtuellen Maschine oder einem Interpreter läuft, wo entweder indirekten Zugriff auf Android-APIs bereitstellt (wie JavaScript in einem Webview oder Browser).”
Da Capgo nur die Inhalt der WebView aktualisiert, fallen diese Richtlinien an.
Best Practices
- Phased Rollouts: Deploy updates gradually
- : Versionskontrolle: Track all deployed versions
- Wiederherstellungsunterstützung: Schnelle Wiederherstellung von Problemen
- Delta-Updates: Nur geänderte Dateien herunterladen
Wann Live-Updates verwenden
Ideal für:
- Bug-Fixes
- Benutzerschnittstellen-Verbesserungen
- Inhaltsaktualisierungen
- Funktions-Schalter
Kein geeignet für:
- Native code-Änderungen
- Hauptversionsaktualisierungen
- Sicherheitspatches, die native Änderungen erfordern
Fortsetzen Sie mit How Live Updates Work in Capgo
Wenn Sie __CAPGO_KEEP_0__ verwenden How Live Updates Work in Capgo um das native Plugin-Work zu planen, verbinden Sie es mit Capgo Plugin-Verzeichnis zur Produktworkflow in Capgo Plugin-Verzeichnis Capacitor Plugins von Capgo zur Implementierungsdetail in Capacitor Plugins von Capgo Hinzufügen oder Aktualisieren von Plugins zur Implementierungsdetail in Hinzufügen oder Aktualisieren von Plugins Alternativen zum Ionic Enterprise Plugin für das Produktworkflow in Alternativen zum Ionic Enterprise Plugin und Capgo Native Builds für das Produktworkflow in Capgo Native Builds.