Passer au contenu principal

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.

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

Comprendre les mises à jour en temps réel dans Capgo

Capacitor mises à jour en temps réel (OTA) replace the web bundle inside your app so you can ship JavaScript, HTML, and CSS changes without a new store binary. 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 Fondamentaux

Une application Capacitor se compose de deux couches principales :

  1. Layer Web: Contient des fichiers HTML, CSS et JavaScript chargés dans le WebView
  2. Layer Native: Contient des code spécifiques au plateforme (Java/Kotlin pour Android, Swift pour iOS)

Le système de mise à jour live update de Capgo fonctionne en remplaçant le layer web en temps réel, car ces fichiers ne sont pas compilés dans le fichier binaire de l'application.

Implémentation Technique

Chemins Serveurs dans Capacitor

Capgo gère deux chemins critiques :

  • Chemins Serveurs Actuels: Pointe vers les fichiers chargés actuellement dans WebView
  • Chemin Serveur Suivant: Points to files that will load on next app restart

Implémentation Android

On 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

Sur 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 met en œuvre des mesures de sécurité militaires par l'intermédiaire de l'encryption à bout de ligne, garantissant que les mises à jour de votre application restent complètement sécurisées de la phase de développement à la phase de déploiement. Notre système d'encryption va au-delà de la signature traditionnelle code pour fournir une sécurité à zéro connaissance réelle.

Architecture de cryptage de bout en bout

  1. Encryption à Bout de Ligne (E2EE): Chaque bundle de mise à jour est chiffré à l'aide de l'algorithme AES-256-GCM de chiffrement 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: Contrairement aux autres solutions d'actualisation OTA qui ne signent que les mises à jour, Capgo utilise une vraie cryptage à zéro connaissance. Cela signifie :

    • Les contenus sont chiffrés avant l'envoi.
    • Les serveurs Capgo ne stockent que des données chiffrées.
    • Decryption only happens on end-user devices
    • Aucun intermédiaire ne peut accéder à votre contenu de mise à jour
  3. Gestion de Clés Sécurisées:

    • Les clés d'encryption sont générées et stockées de manière sécurisée dans votre environnement CI/CD.
    • Les clés privées ne touchent jamais les serveurs de Capgo
    • Chaque version d'application utilise des clés de cryptage uniques.
    • Support de rotation de clés pour une sécurité renforcée

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

Processus de mise à jour de sécurité

  1. Chiffrement avant téléchargement:

    • 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 ensembles chiffrés sont stockés sur le CDN mondial de Capgo
    • Aucune donnée texte non chiffrée ne touche jamais nos serveurs
    • Même dans le cas d'une violation de serveur, les données restent sécurisées
  3. Livraison sécurisée:

    • Les mises à jour sont livrées par des canaux chiffrés
    • Chaque instance d'application valide l'intégrité de la chiffrure
    • Mechanisme de réessai automatique pour la décryptage échouée
  4. Sécurité côté client:

    • Les mises à jour sont vérifiées avant l'installation
    • La décryptage échouée déclenche un rollback automatique
    • Stockage de clés sécurisé dans le stockage protégé de l'application

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

  • Les attaques man-in-the-middle
  • Fuites de serveur
  • Les modifications non autorisées
  • Les attaques de replay
  • La manipulation de contenu

Cycle de Mise à Jour

Capgo’s process d’actualisation est conçu pour être automatique par défaut. Voici comment le processus automatique fonctionne :

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 la autoUpdate Paramètre :

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

Vous pouvez suivre ce processus à travers les événements :

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 durée de l'installation 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
  • Lorsque l'application est mise en arrière-plan directUpdate est faux
  • Rougeur 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 mise en attente disponibles :

  • arrière-plan: Installez lorsque l'application passe en arrière-plan
  • date : Installez après une date/heure spécifique
  • nativeVersion: Installer après la mise à jour native suivante
  • kill: Installer après la fermeture de l'application

Cela est utile pour :

  • Planifier les mises à jour pendant les heures creuses
  • Coordinating updates with user activity
  • Expérience d'actualisation fluide
  • Prévenir les perturbations pendant les tâches critiques

États de mise à jour

Pendant le processus automatique, les bundles passent par ces états :

  1. téléchargement: Téléchargement en cours
  2. en attenteTéléchargement complet, en attente d'installation
  3. réussiMise à jour installée et active
  4. erreurMise à jour échouée (déclenche un rollback automatique)

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 code interprétés peuvent être téléchargés 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 la finalité et la publicité prévues de l'Application soumise à l'App Store, (b) ne créent pas un magasin ou une vitrine 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

Les mises à jour en direct respectent les politiques de Google Play. La politique d'abus de dispositif et de réseau précise :

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

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

Meilleures Pratiques

  1. Déploiements Phasés: Déployez les mises à jour progressivement
  2. Gestion de Version: Suivez toutes les versions déployées
  3. : Suivez toutes les versions déployéesSupport de Retour en Arrière
  4. : Récupération rapide des problèmes: Téléchargez uniquement les fichiers modifiés

Quand utiliser les mises à jour en temps réel

Parfait pour :

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

Pas adapté pour :

  • Changements natifs code
  • Mises à jour de version majeure
  • Correctifs de sécurité nécessitant des changements natifs

Continuez de How Live Updates fonctionnent dans Capgo

Si vous utilisez How les mises à jour en temps réel fonctionnent dans Capgo pour planifier le travail de plugin natif, connectez-l’avec Capgo Répertoire de plugin pour le flux de travail du produit dans Capgo Répertoire de plugin, Capacitor Plugins par Capgo pour le détail d'implémentation dans Capacitor Plugins par Capgo Ajout ou mise à jour de plugins pour le détail d'implémentation dans Ajout ou mise à jour de plugins, Alternatives de plugins d'entreprise Ionic pour le flux de travail du produit dans les alternatives Ionic Enterprise Plugin. Capgo Bâtiments natifs pour le flux de travail du produit dans Capgo Bâtiments natifs.

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.

Dernières actualités de notre Blog

Capgo vous offre les meilleures informations dont vous avez besoin pour créer une application mobile vraiment professionnelle.