Capgo Live Updates verstehen
Live Updates sind eine der mächtigsten Funktionen in Capacitor-Apps, die Echtzeit-Updates ohne App-Store-Submission ermöglichen. Lassen Sie uns tief einsteigen, wie Capgo diese Funktionalität implementiert.
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 es die Web Layer bei Laufzeit ersetzt, da diese Dateien nicht in das App-Binary kompiliert werden.
Technische Implementierung
Server-Pfade in Capacitor
Capgo verwaltet zwei kritische Pfade:
- aktueller Server-Pfad: Zeigt auf Dateien, die derzeit in WebView geladen sind
- nächster Server-Pfad: Zeigt auf Dateien, die bei der nächsten App-Neustart geladen werden
Android-Implementierung
Bei Android verwaltet Capgo 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
Auf iOS werden die Pfade ü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 implementiert militärisch gehaltene Sicherheit durch Ende-zu-Ende-Verschlüsselung, sodass Ihre App-Updates vollständig sicher von der Entwicklung bis zur Bereitstellung bleiben. Unsere Verschlüsselungssystem geht über traditionelle code-Signierung hinaus, um wahrhaftige Null-Wissens-Sicherheit zu bieten.
End-to-End-Verschlüsselungsarchitektur
-
End-to-End-Verschlüsselung (E2EE)Jedes Update-Bundle wird mit AES-256-GCM-Verschlüsselung verschlüsselt, bevor es Ihr Entwicklungsumfeld verlässt. Diese militärisch gehaltene Verschlüsselung stellt sicher, dass Ihre App-Updates vollständig privat und sicher während des gesamten Lieferprozesses bleiben.
-
Null-Wissens-ArchitekturWie andere OTA-Update-Lösungen, die nur Updates signieren, verwendet Capgo wahrhaftige Null-Wissens-Verschlüsselung. Das bedeutet:
- Update-Inhalte werden vor dem Upload verschlüsselt
- Capgo-Server speichern nur verschlüsselte Daten
- Entschlüsselung findet nur auf Endgeräten des Endnutzers statt
- No Zwischenstation kann auf Ihr Update-Inhalt zugreifen
-
Sichere Schlüsselverwaltung:
- Verschlüsselungsschlüssel werden sicher generiert und gespeichert in Ihrem CI/CD-Umgebung
- Private Schlüssel berühren nie Capgo’s Server
- 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 unserem detaillierten Leitfaden: End-to-End-Verschlüsselung in Capgo Live Updates
Sicherheitsprozess für Updates
-
Vor dem Upload-Verschlüsselung:
- Updates werden in Ihrem CI/CD-Pipeline verschlüsselt
- Jeder Datei wird einzeln verschlüsselt
- Metadaten werden auch verschlüsselt, um eine vollständige Privatsphäre zu gewährleisten
-
Sicheres Speicher:
- Verschlüsselte Bundle werden auf Capgo’s globalem CDN gespeichert
- Keine plain text Daten berühren unsere Server
- Even in case of server breach, data remains secure
-
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 Rollback aus
- Secure key storage in der App’s geschützten Speicherung
Dieser umfassende Sicherheitsansatz sichert dafür, dass Ihre App-Updates gegen folgende Bedrohungen geschützt bleiben:
- Mittlerer Angriffe
- Serverseitige Verstöße
- Unbefugte Modifikationen
- Wiedergabeangriffe
- Inhaltstamper
Update Lifecycle
Capgo’s Update-Prozess ist standardmäßig automatisch konzipiert. Hier ist, wie der automatische Prozess funktioniert:
1. Automatische Update-Überprüfung
Der Plugin überprüft automatisch Updates in folgenden Situationen:
- Wenn die App gestartet wird
Dieses Verhalten wird durch die autoUpdate Einstellung gesteuert:
// capacitor.config.json
{
"plugins": {
"CapacitorUpdater": {
"autoUpdate": true // Enable automatic updates
}
}
}
Sie können auch manuell überprüfen mit dem getLatest()
2. Automatische Herunterladen
Wenn eine neue Version erkannt wird, wenn autoUpdate aktiv ist:
- Die Herunterladung startet automatisch
- Der Fortschritt wird intern verfolgt
- Fehlschlag-Downloads werden bei jedem App-Öffnen automatisch wiederholt
- Erfolgreiche Downloads werden in der App-Speicherung gespeichert
Sie können diesen Prozess über Ereignisse 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 Installationszeit 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
directUpdatewahr ist - Bei der nächsten Hintergrundaktivität des Apps, wenn
directUpdatefalsch ist - Automatischer Rollback bei Installationsfehlern
Das Plugin verwaltet auch die Speicherung automatisch:
- Entfernt fehlgeschlagene Updates, wenn
autoDeleteFailedwahr ist - Beseitigt alte Versionen, wenn
autoDeletePreviouswahr ist
Verzögerung von 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: Installieren Sie, wenn die App in den Hintergrund geschoben wird
- Datum: Installieren Sie nach einem bestimmten Datum/Uhrzeit
- nativeVersion: Installieren Sie nach dem nächsten native Update
- Beenden: Installieren Sie nachdem die App beendet wurde
Dies ist nützlich für:
- Scheduling updates während der Nebenzeit
- Koordinierung von Updates mit Benutzeraktivität
- Störungsfreie Erfahrung während Updates sicherstellen
- Verhinderung von Unterbrechungen während kritischer Aufgaben
Update-Zustände
Während des automatischen Prozesses wechseln die Pakete durch diese Zustände:
- herunterladen: Herunterladen in Progress
- abwarten: Herunterladen abgeschlossen, Installieren warten
- erfolgreich: Update installiert und aktiv
- Fehler: Aktualisierung fehlgeschlagen (automatische Rollback-Verarbeitung)
Verkaufskompatibilität
Apple App Store ✅
Live-Updates sind vollständig mit den Richtlinien des Apple App Store kompatibel. Wie im Apple Developer Program License Agreement festgelegt:
“Interpretierte code dürfen heruntergeladen werden, um eine Anwendung, solange solche code: (a) die Hauptfunktion der Anwendung nicht ändert, indem sie Funktionen oder Funktionalitäten bereitstellt, die mit dem vorgesehenen und beworbenen Zweck der Anwendung, wie sie dem App Store vorgelegt wurde, nicht übereinstimmen, (b) keine Verkaufsplattform oder -geschäft für andere code oder Anwendungen erstellt und (c) die Signierung, Sandbox oder andere Sicherheitsfunktionen des Betriebssystems nicht umgeht.”
Capgo-Updates ändern nur die Web-Schicht, während alle Plattform-Sicherheitsgrenzen respektiert werden.
Google Play Store ✅
Live-Updates entsprechen den Richtlinien von Google Play. Insbesondere wird im Geräte- und Netzwerkmissbrauchsrichtlinie festgelegt:
“Diese Einschränkung gilt nicht für code-Instanzen, die in einer virtuellen Maschine oder einem Interpreter ausgeführt werden, der indirekten Zugriff auf Android-APIs bereitstellt (wie JavaScript in einem Webview oder Browser).”
Da Capgo nur die WebView-Inhalte aktualisiert, fallen diese innerhalb dieser erlaubten Richtlinien.
Best Practices
- Phasische Rollouts: Updates schrittweise bereitstellen
- Versionen verwalten: Alle bereitgestellten Versionen verfolgen
- Rückgängigmachung: Schnelle Wiederherstellung nach Problemen
- Delta-Updates: Nur geänderte Dateien herunterladen
Wann Live-Updates verwenden
Ideal für:
- Fehlerbehebungen
- Benutzeroberflächenvorlagen
- Inhaltsaktualisierungen
- Funktionswipis
Nicht geeignet für:
- Nativere code-Änderungen
- Großversionenaktualisierungen
- Sicherheitspatches, die native Änderungen erfordern
Weitermachen von How Live Updates Work in Capgo
Wenn Sie Native-Plugins verwenden, um native Plugin-Arbeit zu planen, verbinden Sie es mit How Live Updates Work in Capgo um das Produktworkflow in __CAPGO_KEEP_0__ Plugin Directory zu verbinden Capgo Plugin Directory für das Produktworkflow in Capgo Plugin Directory Capacitor Plugins durch Capgo für die Implementierungsdetails in Capacitor Plugins durch Capgo Plugins hinzufügen oder aktualisieren für die Implementierungsdetails in Plugins hinzufügen oder aktualisieren Alternativen zu Ionic Enterprise Plugins für den Produktworkflow in Alternativen zu Ionic Enterprise Plugins und Capgo Native Builds für den Produktworkflow in Capgo Native Builds.