Live-Aktualisierungen in Capgo verstehen
Live-Aktualisierungen sind eine der mächtigsten Funktionen in Capacitor-Apps, die Echtzeit-Aktualisierungen ohne App-Store-Submission ermöglichen. Lassen Sie uns tief in die Implementierung dieser Funktionalität durch Capgo eintauchen.
Grundlagen
Eine Capacitor-Anwendung besteht aus zwei Hauptebenen:
- Web-Ebene: Enthält HTML-, CSS- und JavaScript-Dateien, die im WebView geladen werden
- Native-Ebene: Enthält plattform-spezifische code (Java/Kotlin für Android, Swift für iOS)
Capgo’s live Update-System funktioniert, indem die Web-Ebene bei Laufzeit ersetzt wird, da diese Dateien nicht in das Anwendungs- Binary kompiliert werden.
Technische Umsetzung
Server-Pfade in Capacitor
Capgo verwalte zwei kritische Pfade:
- aktuelle Server-Pfad: Zeigt auf Dateien, die derzeit im WebView geladen werden
- Serverpfad für die nächste Anwendung: Zeigt auf Dateien, die bei der nächsten Anwendungsneustart geladen werden
Android-Implementierung
Bei Android verwaltet Capgo die 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 die Pfade durch: verwaltet
// 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, sodass Ihre App-Updates von der Entwicklung bis zur Bereitstellung vollständig sicher bleiben. Unsere Verschlüsselungssystem geht über traditionelle code-Signierung hinaus, um echte Null-Wissens-Sicherheit zu bieten.
Architektur der Ende-zu-Ende-Verschlüsselung
-
Ende-zu-Ende-Verschlüsselung (E2EE): Jedes Update-Paket wird mit AES-256-GCM-Verschlüsselung vor dem Verlassen Ihres Entwicklungsumgebungen verschlüsselt. Diese militärisch-grade Verschlüsselung stellt sicher, dass Ihre App-Updates während des gesamten Lieferprozesses vollständig privat und sicher bleiben.
-
Null-Wissens-Architektur: Im Gegensatz zu anderen OTA-Update-Lösungen, die nur Updates signieren, verwendet Capgo echte Null-Kenntnis-Verschlüsselung. Dies bedeutet:
- Update-Inhalte werden vor dem Hochladen verschlüsselt
- Capgo-Server speichern nur verschlüsselte Daten
- Entschlüsselung erfolgt nur auf Endgeräten des Benutzers
- Kein Zwischenstation kann Ihren Update-Inhalt zugreifen
-
Sichere Schlüsselverwaltung:
- Verschlüsselungsschlüssel werden sicher in Ihrem 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
Machen Sie sich mit unserem Verschlüsselungssystem in unserem detaillierten Leitfaden vertraut: End-to-End-Verschlüsselung in Capgo Live Updates
Sicherheitsprozess aktualisieren
-
Vor dem Upload Verschlüsselung:
- Updates werden in Ihrem CI/CD-Pipeline verschlüsselt
- Jeder Datei wird individuell verschlüsselt
- Metadata wird ebenfalls verschlüsselt, um eine vollständige Privatsphäre zu gewährleisten
-
Sichere Speicherung:
- Verschlüsselte Pakete 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
- Jeder App-Instanz wird die Verschlüsselungsintegrität überprüft
- Automatische Wiederholungsmechanismen für fehlgeschlagene Entschlüsselung
-
Client-Seitige Sicherheit:
- Updates werden vor der Installation überprüft
- Fehlgeschlagene Entschlüsselung löst einen automatischen Rollback aus
- Sichere Schlüsselspeicherung in der App’s geschützten Speicherung
Diese umfassende Sicherheitsstrategie sichert vor, dass Ihre App-Updates gegen folgende Bedrohungen geschützt bleiben:
- Mann-in-der-Mitte-Angriffe
- Server-seitige Sicherheitsverletzungen
- Unbefugte Modifikationen
- Wiedergabeangriffe
- Inhaltstamperung
Update-Lebenszyklus
Capgo’s Aktualisierungsprozess ist standardmäßig automatisch. Hier ist, wie der automatische Prozess funktioniert:
1. Automatische Aktualisierungsprüfung
Der Plugin prüft automatisch auf Aktualisierungen in folgenden Situationen:
- Wenn die App startet
Dieses Verhalten wird durch die autoUpdate Einstellung gesteuert:
// capacitor.config.json
{
"plugins": {
"CapacitorUpdater": {
"autoUpdate": true // Enable automatic updates
}
}
}
Sie können sich auch manuell mit getLatest()
2. Automatische Herunterladen
Wenn eine neue Version ermittelt wird, wenn autoUpdate ist aktiviert:
- Die Herunterladung beginnt automatisch
- Der Fortschritt wird intern verfolgt
- Fehlerhafte Downloads werden bei jedem App-Öffnen automatisch wiederholt
- Erfolgreiche Downloads werden 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 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 App-Hintergrundfunktion wenn
directUpdatefalsch ist - Automatische Rückschaltung bei Installationsfehlern
Das Plugin verwaltet auch die Speicherung automatisch:
- Entfernt fehlgeschlagene Updates wenn
autoDeleteFailedwahr ist - Beseitigt alte Versionen wenn
autoDeletePreviouswahr ist
Updates verzögern
Sie können die Installation von Updates steuern, 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, wenn die App in den Hintergrund geschoben wird
- : Installieren nach bestimmter UhrzeitnativeVersion
- : Installieren nach bestimmter Version: Nach dem nächsten Native-Update installieren
- Beenden: Installieren, nachdem die App beendet wurde
Dies ist nützlich für:
- Scheduling von Updates während der Nebenzeit
- Koordinierung von Updates mit Benutzeraktivität
- Einsatz sicherer Updates
- Verhinderung von Unterbrechungen während kritischer Aufgaben
Update-Zustände
Während des automatischen Prozesses wechseln die Pakete durch diese Zustände:
- herunterladen: Herunterladen im Gange
- ausstehend: Herunterladen abgeschlossen, Installieren warten
- erfolg: Aktualisierung installiert und aktiv
- fehler: Aktualisierung fehlgeschlagen (Automatische Rollover ausgelöst)
Store Compliance
Apple App Store ✅
Live Updates sind vollständig mit den Richtlinien des Apple App Store vereinbar. Wie im Apple Developer Program License Agreement festgelegt:
„Interpretierte code dürfen in eine Anwendung heruntergeladen werden, solange solche code: (a) die Hauptfunktion der Anwendung nicht ändern, indem sie Funktionen oder Features bereitstellen, die mit dem vorgesehenen und beworbenen Zweck der Anwendung im App Store nicht übereinstimmen, (b) keine Ladenplätze oder -stände 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 Google Play Richtlinien. Die Geräte- und Netzwerkmissbrauchsrichtlinie besagt speziell:
„Diese Einschränkung gilt nicht für code die in einer virtuellen Maschine oder einem Interpreter läuft, in dem entweder eine indirekte Zugriff auf Android-APIs (wie JavaScript in einem Webview oder Browser) bereitstellt.“
Da Capgo nur die WebView-Inhalte aktualisiert, fällt es in diese erlaubten Richtlinien.
Best Practices
- Phased Rollouts: Updates schrittweise bereitstellen
- Version Control: Alle bereitgestellten Versionen verfolgen
- Rollback Support: Schnelle Wiederherstellung von Problemen
- Delta Updates: Nur geänderte Dateien herunterladen
Wenn Live-Updates verwenden
Ideal für:
- Fehlerkorrekturen
- Benutzerschnittstellen-Verbesserungen
- Inhaltsaktualisierungen
- Funktions-Schalter
Nicht geeignet für:
- Native code-Änderungen
- Größere Versionsupdates
- Sicherheitspatches, die native Änderungen erfordern