Passer à la page principale
logo de Capgo

Comment fonctionnent les mises à jour en temps réel dans Capgo

Plongez dans la mise en œuvre technique des mises à jour en temps réel dans Capgo, comprenez comment cela fonctionne sous le capot pour les deux iOS et Android.

Crédits de l'article

Martin Donadieu

Auteur

Valeria

Réviseur

Jordan

Éditeur

Comment les mises à jour en temps réel fonctionnent dans 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.

Concepts de base

A Capacitor app consists of two main layers:

  1. Couche Web: Contient des fichiers HTML, CSS et JavaScript chargés dans la Vue d'application
  2. Couche Native: Contient des code spécifiques au plateforme (Java/Kotlin pour Android, Swift pour iOS)

Capgo’s live update system works by replacing the web layer at runtime, as these files aren’t compiled into the app binary.

Implémentation Technique

Chemins de Serveur dans Capacitor

Capgo gère deux chemins critiques :

  • Chemins de Serveur Actuel: Points to files currently loaded in WebView
  • Prochain Chemin de Serveur: Points to files that will load on next app restart

Implémentation Android

Sur Android, Capgo gère les chemins par :

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

Implémentation iOS

On iOS, les chemins sont gérés par :

// 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)
}

Mesures de sécurité

Capgo implements military-grade security through end-to-end encryption, ensuring your app updates remain completely secure from development to deployment. Our encryption system goes beyond traditional code signing to provide true zero-knowledge security.

Architecture de cryptage de bout en bout

  1. Encryption de bout en bout (E2EE): Chaque lot de mise à jour est chiffré à l'aide de l'algorithme AES-256-GCM avant de quitter votre environnement de développement. Cette encryption militaire garantit que les mises à jour de votre application restent complètement privées et sécurisées tout au long du processus de livraison.

  2. Architecture à zéro connaissance: Unlike other OTA update solutions that only sign updates, Capgo employs true zero-knowledge encryption. This means:

    • Les contenus sont chiffrés avant l'envoi.
    • Capgo servers only store encrypted data
    • Decryption only happens on end-user devices
    • No intermediary can access your update content
  3. gestion de la clé de sécurité:

    • Encryption keys are generated and stored securely in your CI/CD environment
    • Private keys never touch Capgo’s servers
    • Each app version can use unique encryption keys
    • Key rotation support for enhanced security

En savoir plus sur notre système d'encryption dans notre guide détaillé : End-to-End Encryption in Capgo Live Updates

Mise à Jour du Processus de Sécurité

  1. Encryption préalable:

    • Les mises à jour sont chiffrées dans votre pipeline CI/CD
    • Chaque fichier est chiffré individuellement
    • Metadata is also encrypted for complete privacy
  2. Stockage sécurisé:

    • Les bundles chiffrés sont stockés sur le CDN mondial de Capgo
    • Aucun texte brut ne touche jamais nos serveurs.
    • Even in case of server breach, data remains secure
  3. Livraison sécurisée:

    • Les mises à jour sont livrées par des canaux chiffrés
    • Each app instance validates encryption integrity
    • Mécanismes de réessai automatique pour la décryptage échouée
  4. Sécurité côté client:

    • Les mises à jour sont vérifiées avant installation
    • La déchiffrement échoué déclenche un roulback automatique
    • Secure key storage in app’s protected storage

Cette approche de sécurité exhaustive garantit que vos mises à jour d'applications restent protégées contre :

  • Les attaques par le milieu
  • Les vols de serveur
  • Les modifications non autorisées
  • Les attaques de replay
  • La manipulation de contenu

Cycle de Mise à Jour

Le processus de mise à jour de Capgo est conçu pour être automatique par défaut. Voici comment fonctionne le processus automatique :

1. Vérification automatique de mise à jour

Le plugin vérifie automatiquement les mises à jour dans les situations suivantes :

  • Lors du démarrage de l'application

Cette fonctionnalité est contrôlée par le autoUpdate configuration :

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

Vous pouvez également vérifier manuellement avec getLatest()

2. Téléchargement automatique

Lorsqu'une nouvelle version est détectée, si autoUpdate est activé :

  1. Le téléchargement démarre automatiquement
  2. Le suivi du progrès est effectué internement
  3. Failed downloads auto-retry at each app open
  4. Successful downloads are stored in app storage

You can monitor this process through events:

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. Installation automatique

La mise en œuvre dépend de votre configuration :

// 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)
    }
  }
}

L'installation se produit :

  • Immédiatement si directUpdate est vrai
  • Lors du prochain arrière-plan de l'application si directUpdate est faux
  • Rollback automatique si l'installation échoue

Le plugin gère également automatiquement le stockage :

  • Supprime les mises à jour échouées si autoDeleteFailed est vrai
  • Nettoie les anciennes versions si autoDeletePrevious est vrai

Mise en Suspend

You can control when updates are installed using delay conditions:

// 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'
    }
  ]
});

Conditions de retard disponibles :

  • arrière-plan: Install when app goes to background
  • date: Installer après une date spécifique
  • nativeVersion: Install after next native update
  • kill : Installer après que l'application ait été fermée

Cela est utile pour :

  • Scheduling updates during off-peak hours
  • Coordinating updates with user activity
  • Expérience d'actualisation fluide
  • Prévenir les interruptions pendant les tâches critiques

États de mise à jour

Lors du processus automatique, les bundles passent par ces états :

  1. téléchargement: Téléchargement en cours
  2. en attente: Téléchargement complet, en attente d'installation
  3. réussi: Mise à jour installée et active
  4. erreur: Update failed (triggers auto-rollback)

Conformité de l'application

Apple App Store

Les mises à jour Live sont pleinement conformes aux politiques de l'Apple App Store. Comme indiqué dans le Contrat de licence du programme Apple Developer :

“Les interprétations code peuvent être téléchargées dans une Application mais uniquement si de telles code: (a) ne changent pas l'objectif principal de l'Application en fournissant des fonctionnalités ou des capacités qui sont incompatibles avec l'objectif et l'annonce prévus de l'Application soumise à l'App Store, (b) ne créent pas un magasin ou un espace de vente pour d'autres code ou applications, et (c) ne contournent pas les fonctionnalités de signature, de sandbox ou de sécurité de l'OS.”

Les mises à jour Capgo ne modifient que la couche web tout en respectant toutes les limites de sécurité du système.

Google Play Store

Live Updates comply with Google Play Policies. The Device and Network Abuse policy specifically states:

“Cette restriction ne s'applique pas aux code qui s'exécutent dans une machine virtuelle ou un interpréteur où l'un ou l'autre fournit un accès indirect aux API Android (comme JavaScript dans un webview ou navigateur).”

Puisque Capgo ne met à jour que le contenu de WebView, cela tombe dans ces directives autorisées.

Meilleures pratiques

  1. Déploiements étalés: Déployez les mises à jour progressivement
  2. Contrôle de version: Suivez toutes les versions déployées
  3. Support de reversion: Rétablissez rapidement les problèmes
  4. Mises à jour delta: Téléchargez uniquement les fichiers modifiés

Quand utiliser les mises à jour en direct

Parfait pour :

  • Bug fixes
  • Améliorations de l'interface utilisateur
  • Mises à jour de contenu
  • Les boutons de fonctionnalité

Non adapté à :

  • Les modifications natives de code
  • Mises à jour de version majeure
  • Security patches requiring native changes

Keep going from How Live Updates Work in Capgo

Si vous utilisez Comment fonctionnent les mises à jour en direct dans Capgo to plan native plugin work, connect it with le Répertoire de plugin Capgo for the product workflow in Capgo Plugin Directory, les Plugins de Capacitor par Capgo pour les détails d'implémentation dans Capacitor Plugins par Capgo Ajouter ou Mettre à Jour les Plugins pour les détails d'implémentation dans Ajouter ou Mettre à Jour les Plugins Alternatives aux Plugins Ionic Enterprise pour le flux de travail du produit dans les alternatives Ionic Enterprise Plugin Capgo Bâtiments Natives for the product workflow in Capgo Native Builds.

Mises à jour en temps réel pour les applications Capacitor

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.

un soutien humain de Martin

Démarrer maintenant

Dernières actualités de notre Blog

Capgo gives you the best insights you need to create a truly professional mobile app.