Hauptinhalt überspringen

How Live Updates Work in Capgo

Deep dive into the technical implementation of live updates in Capgo, understanding how it works under the hood for both iOS and Android.

Martin Donadieu

Martin Donadieu

Inhaltsmarketer

How Live Updates Work in Capgo

Understanding Live Updates in Capgo

Live updates are one of the most powerful features in Capacitor apps, allowing real-time updates without app store submissions. Let’s dive deep into how Capgo implements this functionality.

Grundlagen

Eine Capacitor-Anwendung besteht aus zwei Hauptlagen:

  1. Web-Layer: Enthält HTML-, CSS- und JavaScript-Dateien, die im WebView geladen werden
  2. 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 verwalte zwei kritische Pfade:

  • aktuelle Server-Pfad: Zeigt auf Dateien, die derzeit im WebView geladen werden
  • Zukünftiger Server Pfad: Zeigt auf Dateien, die bei der nächsten App-Neustart 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, um sicherzustellen, dass Ihre App-Updates vollständig sicher von der Entwicklung bis zur Bereitstellung bleiben. Unser Verschlüsselungssystem geht über traditionelle code-Signierung hinaus, um echte Null-Wissens-Sicherheit bereitzustellen.

End-to-End-Verschlüsselungsarchitektur

  1. End-to-End-Verschlüsselung (E2EE): Jeder Update-Bundle 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 vollständig privat und sicher während des gesamten Lieferprozesses bleiben.

  2. Null-Wissens-Architektur: Im Gegensatz zu anderen OTA-Update-Lösungen, die nur Updates signieren, verwendet Capgo echte Null-Kenntnis-Verschlüsselung. Das bedeutet:

    • Die Update-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 Zwischenstation kann Ihren Update-Inhalt zugreifen
  3. Sichere Schlüsselverwaltung:

    • Die Verschlüsselungsschlüssel werden sicher in Ihrem CI/CD-Umgebung generiert und gespeichert
    • Private Schlüssel berühren Capgo-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 unserem detaillierten Leitfaden: End-to-End-Verschlüsselung in Capgo Live Updates

Update-Sicherheitsprozess

  1. Vor-Upload-Verschlüsselung:

    • Updates werden in Ihrem CI/CD-Pipeline verschlüsselt
    • Jeder Datei wird individuell verschlüsselt
    • Die Metadaten werden ebenfalls verschlüsselt, um eine vollständige Privatsphäre zu gewährleisten
  2. Sichere Speicherung:

    • Verschlüsselte Pakete werden auf Capgo’s globaler CDN gespeichert
    • Keine plain text-Daten berühren unsere Server
    • Even in case of server breach, data remains secure
  3. Even in case of server breach, data remains secure:

    • Sichere Lieferung
    • Updates werden über verschlüsselte Kanäle geliefert
    • Automatische Wiederholungsmechanismen für fehlgeschlagene Entschlüsselung
  4. Clientseitige Sicherheit:

    • Updates werden vor der Installation verifiziert
    • Fehlgeschlagene Entschlüsselung löst einen automatischen Rollback 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:

  • Man-in-the-middle-Angriffe
  • Serverseitige Sicherheitsverletzungen
  • Unbefugte Modifikationen
  • Wiedergabeangriffe
  • Inhaltsmanipulationen

Update-Lebenszyklus

Capgo’s Aktualisierungsprozess ist standardmäßig automatisch. Hier ist eine Beschreibung, wie der automatische Prozess funktioniert:

1. Automatische Aktualisierungsprüfung

Der Plugin prüft automatisch auf Aktualisierungen in folgenden Situationen:

  • Wenn die App gestartet wird

Dieses Verhalten wird durch die Einstellung gesteuert: autoUpdate Sie können auch manuell mit

// capacitor.config.json
{
  "plugins": {
    "CapacitorUpdater": {
      "autoUpdate": true // Enable automatic updates
    }
  }
}

2. Automatische Herunterladen getLatest()

Wenn eine neue Version ermittelt wird, wenn

ist aktiviert: autoUpdate Die Herunterladung beginnt automatisch

  1. Der Fortschritt wird intern verfolgt
  2. __CAPGO_KEEP_0__’s
  3. Automatische Downloads werden bei jedem App-Öffnen erneut versucht
  4. 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 von Ihrer Konfiguration abhängig:

// 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 directUpdate ist wahr
  • Bei der nächsten App-Hintergrundaktivität, wenn directUpdate ist falsch
  • Automatische Rückschaltung bei Installationsschlägen

Der Plugin verwaltet auch die Speicherung automatisch:

  • Entfernt fehlgeschlagene Updates wenn autoDeleteFailed ist wahr
  • Beseitigt alte Versionen wenn autoDeletePrevious ist wahr

Verzögert Updates

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 Sie, wenn die App in den Hintergrund geschoben wird
  • Datum: Installieren Sie nach einem bestimmten Datum/Uhrzeit
  • nativeVersion: 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
  • Ein glatter Update-Erlebnis sicherzustellen
  • Verhinderung von Unterbrechungen während kritischer Aufgaben

Update-Zustände

Während des automatischen Prozesses wechseln die Pakete durch diese Zustände:

  1. herunterladen: Herunterladen im Gange
  2. in Vorbereitung: Die Herunterladung ist abgeschlossen, Installationswarten
  3. Erfolg: Die Aktualisierung wurde installiert und ist aktiv
  4. Fehler: Die Aktualisierung fehlgeschlagen (Auslöser für automatischen Rollback)

Lizenzvereinbarung

Apple App Store ✅

Live-Updates sind vollständig mit den Richtlinien der Apple App Store vereinbar. Wie im Apple Developer Program License Agreement festgelegt:

“Interpretierte code dürfen heruntergeladen werden, um eine Anwendung, aber nur so lange, wie solche code: (a) die Hauptzweck der Anwendung nicht ändert, indem sie Funktionen oder Funktionalitäten bereitstellt, die mit dem beabsichtigten 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 Sicherheitsmerkmale des Betriebssystems nicht umgeht.”

Updates von Capgo ä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, das in einer virtuellen Maschine oder einem Interpreter läuft, der entweder einen indirekten Zugriff auf Android-APIs bietet (z. B. JavaScript in einem Webview oder Browser).”

Da Capgo nur die WebView-Inhalte aktualisiert, fällt es in diese erlaubten Richtlinien.

Best Practices

  1. Phased Rollouts: Updates schrittweise bereitstellen
  2. Version Control: Alle bereitgestellten Versionen verfolgen
  3. Rollback Support: Schnelle Wiederherstellung von Problemen
  4. Deltas: Nur geänderte Dateien herunterladen

When Live Updates zu verwenden

Perfect für:

  • Korrekturen von Fehlern
  • Verbesserungen der Benutzeroberfläche
  • Inhaltsaktualisierungen
  • Funktionsflags

Kein geeignetes Szenario:

  • Native code-Änderungen
  • Große Versionsaktualisierungen
  • Sicherheitspatches, die native Änderungen erfordern

Fortsetzen Sie mit How Live Updates Work in Capgo

Wenn Sie __CAPGO_KEEP_0__ verwenden How Live Updates funktionieren in Capgo um native Plugin-Arbeit 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 Ionic Enterprise Plugin Alternativen zur Produktworkflow in Ionic Enterprise Plugin Alternativen, und Capgo Native Builds zur Produktworkflow in Capgo Native Builds.

Live-Updates für Capacitor-Apps

Wenn ein Bug im Weblayer live ist, schicken Sie die Reparatur über Capgo anstatt Tage zu warten, bis die App-Store-Zulassung erteilt wird. Die Benutzer erhalten das Update im Hintergrund, während native Änderungen im normalen Review-Verfahren bleiben.

Menschliche Unterstützung von Martin

Jetzt loslegen

Neueste Nachrichten aus unserem Blog

Capgo gibt Ihnen die besten Einblicke, die Sie benötigen, um eine wirklich professionelle mobile App zu erstellen.