Zum Hauptinhalt springen

Wie Live Updates in Capgo funktionieren

Tiefe Einblicke in die technische Implementierung von Live Updates in Capgo, um zu verstehen, wie es unter der Haube für beide iOS und Android funktioniert.

Artikelcredits

Martin Donadieu

Schreiber

Valeria

Reviewer

Jordan

Editor

How Live Updates Work in Capgo

Verstehen von 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 Hauptebenen:

  1. Web Layer: Enthält HTML-, CSS- und JavaScript-Dateien, die im WebView geladen werden
  2. Nativeschicht: Enthält plattformspezifische code (Java/Kotlin für Android, Swift für iOS)

Capgo’s live update-System funktioniert, indem es die Web-Schicht bei Laufzeit ersetzt, 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 in WebView geladen sind
  • nächster Server-PfadZeigt auf Dateien, die bei der nächsten App-Neustartladung geladen werden.

Android-Implementierung

Auf 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();
}

Bei Android verwalte __CAPGO_KEEP_0__ Pfade durch:

On 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, 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 bereitzustellen.

End-to-End-Verschlüsselungsarchitektur

  1. End-to-End-Verschlüsselung (E2EE): Jedes Update-Paket wird mit AES-256-GCM-Verschlüsselung verschlüsselt, bevor es Ihr Entwicklungsumfeld verlässt. 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: Anders als 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 erfolgt nur auf Endgeräten des Benutzers
    • Kein Zwischenstation kann Ihren Update-Inhalt zugreifen
  3. Schlüsselmanagement:

    • 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 für erhöhte Sicherheit

Erfahren Sie mehr über unser Verschlüsselungssystem in unserem umfassenden Leitfaden. End-to-End-Verschlüsselung in Capgo Live Updates

Sicherheitsprozess bei Updates

  1. Vor dem Upload-Verschlüsselung:

    • Updates werden in Ihrer CI/CD-Pipeline verschlüsselt
    • Jeder Datei wird einzeln verschlüsselt
    • Metadata is also encrypted for complete privacy
  2. Datensicherheit:

    • Verschlüsselte Pakete werden auf Capgo’s globalem CDN gespeichert
    • Kein plain-text-Daten treffen unsere Server
    • Even in einem Fall von Server-Einbruch bleibt die Daten sicher
  3. Sichere Lieferung:

    • Updates werden über verschlüsselte Kanäle geliefert
    • Jedes App-Instanz überprüft die Verschlüsselungsintegrität
    • Automatic retry mechanisms for failed decryption
  4. Kunden-seitige Sicherheit:

    • Updates werden vor der Installation überprüft
    • Fehlgeschlagene Entschlüsselung löst automatische Rollback aus
    • Sichere Schlüsselspeicherung in der App’s geschützten Speicherung

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

Update-Lebenszyklus

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

1. Automatische Update-Überprüfung

Die Plugin überprüft automatisch Updates in folgenden Situationen:

  • Wenn die App gestartet wird

Dieses Verhalten wird durch das autoUpdate Einstellung:

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

Sie können dies auch manuell überprüfen mit getLatest()

2. Automatische Herunterladen

Wenn eine neue Version erkannt wird, wenn autoUpdate Ist aktiviert:

  1. Die Herunterladung startet automatisch
  2. Der Fortschritt wird intern verfolgt
  3. Failed downloads auto-retry at each app open
  4. Heruntergeladene Dateien werden im App-Speicher 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)
    }
  }
}

Installation erfolgt:

  • Sofort, wenn directUpdate wahr ist
  • Bei der nächsten Hintergrund-Aktivität, wenn directUpdate falsch ist
  • Automatische Rückschaltung bei Installationsschlägen

Der Plugin verwaltet auch die Speicherung automatisch:

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

Verzögerte Updates

Sie können die Installation von Updates mit Verzögerungsbedingungen steuern:

// 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 when app goes to background
  • DatumInstallieren nach bestimmtem Datum/Uhrzeit
  • Nativversion: Installieren Sie nach dem nächsten nativen Update
  • Beenden: Installieren Sie nach dem Beenden der App

Dies ist nützlich für:

  • Scheduling von Updates während der Nebenzeit
  • Koordinierung von Updates mit Benutzeraktivität
  • Sicherstellung eines glatten Update-Erlebnisses
  • Verhinderung 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 Bearbeitung
  2. anwarten: Herunterladen abgeschlossen, Installieren warten
  3. erfolg: Update installiert und aktiv
  4. fehlerAktualisierung fehlgeschlagen (Ausfallrollback ausgelöst)

Store-Kompatibilität

Apple App Store

Live Updates entsprechen vollständig den Richtlinien des Apple App Store. Wie im Apple Developer Program Lizenzvertrag festgelegt ist:

“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.”

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. 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 indirekten Zugriff auf Android-APIs bietet (z. B. JavaScript in einem Webview oder Browser).”

Da Capgo nur die WebView-Inhalte aktualisiert, fallen diese Richtlinien in diese erlaubten Richtlinien.

Best Practices

  1. Phasenweiser Rollout: Updates werden schrittweise bereitgestellt
  2. VersionskontrolleAlle veröffentlichten Versionen verfolgen
  3. Rückgängigmachung: Schnelle Wiederherstellung von Problemen
  4. Delta-UpdatesNur geänderte Dateien herunterladen

Wann Live Updates verwenden

Ideal für:

  • Fehlerbehebungen
  • Benutzeroberflächenvorlagen
  • Inhaltsaktualisierungen
  • Funktionsflags

Nicht geeignet für:

  • Nativ code-Änderungen
  • Großversionenaktualisierungen
  • Sicherheitspatches, die nатив Änderungen erfordern

Weitermachen Sie 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 durch Capgo Plugins hinzufügen oder aktualisieren für die Implementierungsdetails in Plugins hinzufügen oder aktualisieren Alternativen zu Ionic Enterprise Plugins für das Produktworkflow in Alternativen zu Ionic Enterprise Plugins und Capgo Native Builds für das Produktworkflow in Capgo Native Builds.

Live Updates für Capacitor-Apps

Wenn ein Web-Schicht-Bug live ist, schicken Sie die Reparatur über Capgo anstatt Tage zu warten, bis die App-Store-Zulassung genehmigt ist. Die Benutzer erhalten die Aktualisierung im Hintergrund, während native Änderungen im normalen Review-Prozess bleiben.

Menschliche Unterstützung von Martin

Jetzt loslegen

Neueste von unserem Blog

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