Capgo-Updates verstehen
Capacitor-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
Eine 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 die Web-Layer bei Laufzeit ersetzt wird, da diese Dateien nicht in das App-Binary kompiliert werden.
Technische Umsetzung
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
Auf 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
Auf 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. Unser Verschlüsselungssystem geht über traditionelle code-Signierung hinaus, um wahre Null-Wissens-Sicherheit bereitzustellen.
End-to-End-Verschlüsselungsarchitektur
-
End-to-End-Verschlüsselung (E2EE): Jeder Update-Bundle wird vor dem Verlassen Ihres Entwicklungsumgebungen mit AES-256-GCM-Verschlüsselung verschlüsselt. Diese militärisch-grade Verschlüsselung sichert, dass Ihre App-Updates während des gesamten Lieferprozesses vollständig privat und sicher bleiben.
-
Zero-Knowledge-Architektur: Anders als andere OTA-Update-Lösungen, die nur Updates signieren, verwendet Capgo echte Zero-Knowledge-Verschlüsselung. Das bedeutet:
- Update-Inhalte werden vor dem Upload 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 die Rotation von Schlüsseln zur Erhöhung der Sicherheit
Erfahren Sie mehr über unser Verschlüsselungssystem in unserem umfassenden Leitfaden: End-to-End-Verschlüsselung in Capgo Live Updates
Update-Sicherheitsprozess
-
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 globaler CDN gespeichert
- Keine plain text-Daten berühren unsere Server
- Even in Falle eines Server-Angriffs bleibt die Daten sicher
-
Sichere Lieferung:
- Updates werden über verschlüsselte Kanäle geliefert
- Jeder App-Instanz wird die Integrität der Verschlüsselung überprüft
- Automatische Wiederholungsmechanismen für fehlgeschlagene Entschlüsselung
-
Client-Seitige Sicherheit:
- Updates werden vor der Installation überprüft
- Fehlgeschlagene Entschlüsselung löst automatischen Rollback aus
- Sichere Schlüssel speichern in der geschützten Speicherung der App
Diese umfassende Sicherheitsstrategie stellt sicher, dass Ihre App-Updates gegen folgende Bedrohungen geschützt bleiben:
- Mann-im-Mittens-Attacken
- Server-seitige Angriffe
- Unautorisierte Modifikationen
- Replay-Angriffe
- Inhaltstampern
Update-Lebenszyklus
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 sich auch manuell mit getLatest()
2. Automatische Herunterladen
When eine neue Version erkannt wird, wenn autoUpdate ist aktiviert:
- Der Download startet automatisch
- Der Fortschritt wird intern verfolgt
- Bei fehlgeschlagenen Downloads wird automatisch bei jedem App-Start wiederholt
- Bei erfolgreichen Downloads werden diese im App-Speicher 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 Installationstimehä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:
- Unmittelbar wenn
directUpdatewahr ist - Wenn die nächste App im Hintergrund läuft und
directUpdateist false - Wenn die Installation fehlschlägt, wird automatisch zurückgerollt:
Der Plugin verwaltet auch die Speicherung automatisch:
- Entfernt fehlgeschlagene Updates wenn
autoDeleteFailedist true - Löscht alte Versionen wenn
autoDeletePreviousist true
Update-Hinweis:
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, wenn App in Hintergrund läuft
- : Installationsdatum: Installieren nach bestimmtem Datum/Uhrzeit
- : Installierte native Version: Installieren nach nächstem native Update
- : Installieren, nachdem App beendet wurdeDies ist nützlich für:
Updates während ruhiger Zeiten planen
- Updates mit Benutzeraktivität abstimmen
- Eine glatte Update-Erfahrung sicherstellen
- Störungen während wichtiger Aufgaben vermeiden
- __CAPGO_KEEP_0__
Aktualisierungsstatus
Während des automatischen Prozesses wechseln die Bundles durch diese Status:
- herunterladen: Herunterladen in Progress
- ausstehend: Herunterladen abgeschlossen, Installieren warten
- Erfolg: Aktualisierung installiert und aktiv
- Fehler: Aktualisierung fehlgeschlagen (Auslöser für Auto-Rollback)
Lagerechtigkeit im Store
Apple App Store
Live Updates entsprechen vollständig den Richtlinien des Apple App Store.
“Interpreted code may be downloaded to an Application but only so long as such code: (a) does not change the primary purpose of the Application by providing features or functionality that are inconsistent with the intended and advertised purpose of the Application as submitted to the App Store, (b) does not create a store or storefront for other code or applications, and (c) does not bypass signing, sandbox, or other security features of the OS.”
“Interpretierte Capgo dürfen in eine Anwendung heruntergeladen werden, solange diese __CAPGO_KEEP_1__: (a) die Hauptfunktion der Anwendung nicht ändert, 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 -flächen für andere __CAPGO_KEEP_2__ oder Anwendungen erstellt und (c) die Signierung, Sandbox oder andere Sicherheitsfunktionen des Betriebssystems nicht umgeht.”
__CAPGO_KEEP_0__-Updates ändern nur die Web-Schicht und respektieren alle Plattform-Sicherheitsgrenzen.
Google Play Store ✅
“This restriction does not apply to code that runs in a virtual machine or an interpreter where either provides indirect access to Android APIs (such as JavaScript in a webview or browser).”
“Diese Einschränkung gilt nicht für Capgo-Instanzen, die in einer virtuellen Maschine oder einem Interpreter laufen, der entweder einen indirekten Zugriff auf Android-APIs ermöglicht (wie JavaScript in einem Webview oder Browser).”
Da __CAPGO_KEEP_0__ nur die WebView-Inhalte aktualisiert, fallen diese Anforderungen in diese erlaubten Richtlinien.
- Best PracticesPhased Rollouts
- : Updates schrittweise bereitstellenVersion Control
- Rückgängigmachungsunterstützung: Schnelle Wiederherstellung von Problemen
- Delta-Updates: Laden Sie nur geänderte Dateien herunter
Wann Live-Updates verwenden
Ideal für:
- : Bug-Fixes
- : Benutzeroberflächenvorlagen
- : Inhaltsaktualisierungen
- : Featureschalter
: Nicht geeignet für:
- : Native code-Änderungen
- Große Versionsupdates
- Sicherheitspatches, die native Änderungen erfordern
Weitermachen von Wie Live Updates funktionieren in Capgo
Wenn Sie __CAPGO_KEEP_0__ verwenden Wie Live Updates funktionieren in Capgo um native Plugin-Arbeit zu planen, verbinden Sie es mit Capgo Plugin-Verzeichnis für den Produktworkflow in Capgo Plugin-Verzeichnis, Capacitor Plugins von Capgo für die Implementierungsdetails in Capacitor Plugins von Capgo, Hinzufügen oder Aktualisieren von Plugins für die Implementierungsdetails in Hinzufügen oder Aktualisieren von Plugins, Ionisches Enterprise-Plugin-Ersatz zur Produktworkflow in Ionisches Enterprise-Plugin-Ersatz, und Capgo Native Builds zur Produktworkflow in Capgo Native Builds.