Zum Hauptinhalt springen

Wie Live-Aktualisierungen in Capgo funktionieren

Eintauchen Sie in die technische Implementierung von Live-Aktualisierungen in Capgo, um zu verstehen, wie sie unter der Haube für beide iOS und Android funktionieren.

Martin Donadieu

Martin Donadieu

Content-Marketing-Manager

Wie Live-Aktualisierungen in Capgo funktionieren

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:

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

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

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

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

  1. Die Herunterladung beginnt automatisch
  2. Der Fortschritt wird intern verfolgt
  3. Fehlerhafte Downloads werden bei jedem App-Öffnen automatisch wiederholt
  4. 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 directUpdate wahr ist
  • Bei der nächsten App-Hintergrundfunktion wenn directUpdate falsch ist
  • Automatische Rückschaltung bei Installationsfehlern

Das Plugin verwaltet auch die Speicherung automatisch:

  • Entfernt fehlgeschlagene Updates wenn autoDeleteFailed wahr ist
  • Beseitigt alte Versionen wenn autoDeletePrevious wahr 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:

  1. herunterladen: Herunterladen im Gange
  2. ausstehend: Herunterladen abgeschlossen, Installieren warten
  3. erfolg: Aktualisierung installiert und aktiv
  4. 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

  1. Phased Rollouts: Updates schrittweise bereitstellen
  2. Version Control: Alle bereitgestellten Versionen verfolgen
  3. Rollback Support: Schnelle Wiederherstellung von Problemen
  4. 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
Live-Updates für Capacitor-Apps

Wenn ein Web-layer-Bug live ist, versenden Sie die Reparatur über Capgo anstatt Tage auf die Genehmigung des App-Store zu warten. Die Benutzer erhalten die Aktualisierung im Hintergrund, während native Änderungen im normalen Review-Prozess bleiben.

Los geht's jetzt

Aktuelle Beiträge aus unserem Blog

Capgo bietet Ihnen die besten Einblicke, die Sie benötigen, um ein wirklich professionelles Mobil-App zu erstellen.