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.

Artikelcredits

Martin Donadieu

Schriftsteller

Valeria

Rezensent

Jordan

Redakteur

Wie Live-Updates in Capgo funktionieren

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:

  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 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

  1. 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.

  2. 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
  3. 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

  1. 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
  2. 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
  3. 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
  4. 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:

  1. Der Download startet automatisch
  2. Der Fortschritt wird intern verfolgt
  3. Bei fehlgeschlagenen Downloads wird automatisch wiederholt, wenn die App geöffnet wird
  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 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 directUpdate ist wahr
  • On die nächste App-Hintergrundverarbeitung wenn directUpdate ist falsch
  • Automatische Rückkehr wenn die Installation fehlschlägt

Das 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 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:

  1. herunterladen: Herunterladen in Progress
  2. anwarten: Herunterladen abgeschlossen, Installieren warten
  3. erfolgreich: Update installiert und aktiv
  4. 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

  1. Phased Rollouts: Deploy updates gradually
  2. : Versionskontrolle: Track all deployed versions
  3. Wiederherstellungsunterstützung: Schnelle Wiederherstellung von Problemen
  4. 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.

Live-Updates für Capacitor-Apps

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

Wenn ein Web-Schicht-Bug live ist, schicken Sie die Reparatur über __CAPGO_KEEP_0__ anstatt Tage zu warten, bis die App-Store-Zulassung genehmigt ist. Die Benutzer erhalten das Update im Hintergrund, während native Änderungen im normalen Review-Prozess bleiben. Kontext: Capgo-Marketing-Website. Rolle: Unterstützende Beschreibung oder Meta-Beschreibung. Gesehen in: Komponente GetStarted.astro. Capgo-Produkt-/Marken- und Entwicklertitel genau beibehalten. Nachrichtenschlüssel `instant_updates_for_capacitor_apps_description` (Instant Updates For Capacitor Apps Description).

Los geht's!

Neueste Beiträge aus unserem Blog

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