Passer au contenu principal

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.

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

Crédits de l'article

Martin Donadieu

Auteur

Valeria

Relecteur

Éditeur

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

Understanding Live Updates in Capgo

Mises à jour en temps réel sont l'une des fonctionnalités les plus puissantes des applications Capacitor, permettant des mises à jour en temps réel sans soumission dans les magasins d'applications. Étouffons-nous dans les détails sur la façon dont Capgo met en œuvre cette fonctionnalité.

Concepts de base

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 natif: Contient des code spécifiques à la plateforme (Java/Kotlin pour Android, Swift pour iOS)

Le système d'actualisation en direct de Capgo fonctionne en remplaçant la couche web en temps de exécution, car ces fichiers ne sont pas compilés dans le fichier binaire de l'application.

Mise en œuvre technique

Chemins de serveur dans Capacitor

Capgo gère deux chemins critiques :

  • Chemins de serveur actuel: Pointe vers les fichiers chargés actuellement dans WebView
  • Prochain chemin de serveurcontext : Page/zone : Capgo Builder / produit de construction native dans la nuage. Rôle : Étiquette de navigation ou élément de navigation court. Clé de message `native_build_builder_credit_next` (Crédit de constructeur de build natif suivant).

: Pointe vers les fichiers qui seront chargés à la prochaine redémarrage de l'application

On Android, Capgo manages paths through:

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

Sur Android, __CAPGO_KEEP_0__ gère les chemins par l'intermédiaire de :

Implémentation iOS

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

Sur iOS, les chemins sont gérés par l'intermédiaire de :

Mesures de sécurité : Capgo met en œuvre des mesures de sécurité de niveau militaire par l'intermédiaire de l'encryption de bout en bout, 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. Chiffrement de bout en bout (E2EE)Chaque bundle d'actualisation est chiffré à l'aide de l'algorithme AES-256-GCM avant de quitter votre environnement de développement. Ce chiffrement militaire garantit que vos mises à jour restent complètement privées et sécurisées tout au long du processus de livraison.

  2. Architecture de connaissance zéro: Contrairement à d'autres solutions d'actualisation OTA qui ne signent que les mises à jour, Capgo utilise un véritable chiffrement de connaissance zéro. Cela signifie :

    • Les contenus d'actualisation sont chiffrés avant l'envoi
    • Les serveurs de Capgo n'ont que des données chiffrées en stock
    • La déchiffrement ne se produit que sur les appareils des utilisateurs finals
    • Aucun intermédiaire ne peut accéder à votre contenu d'actualisation
  3. Gestion de clés sécurisée:

    • Les clés de chiffrement 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 peut utiliser des clés d'encryption uniques
    • Support de rotation de clés pour une sécurité renforcée

En savoir plus sur notre système d'encryption dans notre guide détaillé : Encryption de bout en bout dans les mises à jour en direct de Capgo

Procédure de mise à jour de la sécurité

  1. Encryption préalable:

    • Les mises à jour sont chiffrées dans votre pipeline CI/CD
    • Chaque fichier est chiffré individuellement
    • Les métadonnées sont également chiffrées pour une totale confidentialité
  2. Stockage sécurisé:

    • Les bundles chiffrés sont stockés sur le CDN mondial de Capgo
    • Aucune donnée texte non chiffrée ne touche jamais nos serveurs
    • Even en cas de violation du serveur, les données restent sécurisées
  3. Livraison Sécure:

    • Mises à jour transmises par des canaux chiffrés
    • Chaque instance d'application valide l'intégrité de la chiffrage
    • Mécanismes de réessais automatiques pour la déchiffrage échouée
  4. Sécurité côté Client:

    • Mises à jour vérifiées avant installation
    • La déchiffrage échouée déclenche un roulage 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 d'application restent protégées contre :

  • attaques de l'homme du milieu
  • violations du serveur côté
  • Modifications non autorisées
  • Attentats de replay
  • Contrefaçon 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 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 progrès est suivi internement
  3. Les téléchargements échoués sont réessayés automatiquement à chaque ouverture de l'application
  4. Les téléchargements réussis sont stockés dans le stockage de l'application

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 a lieu :

  • Immédiatement si directUpdate est vrai
  • On la prochaine mise en arrière-plan de l'application si directUpdate est faux
  • Le roulage 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

Diffère les mises à jour

Vous pouvez contrôler quand les mises à jour sont installées en utilisant des conditions de retard :

// 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: Installez lorsque l'application passe en arrière-plan
  • : Date: Installez après une date spécifique/heure
  • : Installez après la prochaine mise à jour native: Installez après que l'application soit fermée
  • : Cela est utile pour :Scheduling des mises à jour pendant les heures creuses

Coordonner les mises à jour avec l'activité de l'utilisateur

  • Assurer une expérience de mise à jour fluide
  • Prévenir les perturbations pendant les tâches critiques
  • Coordinating updates with user activity
  • Ensuring smooth update experience

États de mise à jour

Durant le 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: Mise à jour échouée (déclenche un rollback automatique)

Conformité de l'entrepôt

Apple App Store ✅

Les mises à jour en temps réel sont pleinement conformes aux politiques de l'App Store d'Apple. Comme indiqué dans le contrat de licence du programme Apple Developer :

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

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 temps réel sont conformes aux politiques de Google Play. La politique d'abus de dispositif et de réseau spécifie notamment :

“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 Phasés: Déployez les mises à jour progressivement
  2. Gestion de Versioncontext : Page/zone : Site de marketing de Capgo. Rôle : Étiquette de navigation ou élément UI court. Clé de message `version_control` (Gestion de version).
  3. Rollback Support: Rapide récupération des problèmes
  4. Delta Updates: Seuls les fichiers modifiés sont téléchargés

When to Use Live Updates

: Parfait pour :

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

Not suitable for:

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

Continuez à lire : Comment fonctionnent les mises à jour en temps réel pour Capacitor dans Capgo

Si vous utilisez Comment fonctionnent les mises à jour en temps réel pour Capacitor dans Capgo pour planifier le travail de plugin native, connectez-l’avec Capgo Répertoire des plugins pour le flux de travail du produit dans Capgo Répertoire des plugins, Capacitor Plugins par Capgo pour le détail d'implémentation dans Capacitor Plugins par Capgo, Ajouter ou Mettre à jour des Plugins pour le détail d'implémentation dans Ajouter ou Mettre à jour des Plugins, Alternatives d'extension d'entreprise Ionic pour le flux de travail du produit dans les alternatives d'extension d'entreprise Ionic, et 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.

Lorsqu'un bug de la couche web est en cours, expédiez la correction par le biais de __CAPGO_KEEP_0__ au lieu d'attendre des jours pour l'approbation des magasins d'applications. Les utilisateurs reçoivent la mise à jour en arrière-plan tandis que les modifications natives restent dans la voie de revue normale. Contexte : Page/zone : Site web de marketing Capgo. Rôle : Description de soutien ou de métadescription. Vu dans : composant GetStarted.astro. Conservez les termes de produit/marque et les termes de développeur exactement. Clé de message `instant_updates_for_capacitor_apps_description` (Description des mises à jour instantanées pour les applications Capacitor).

Commencez Maintenant

Dernières Actualités de notre Blog

Capgo vous offre les meilleures informations nécessaires pour créer une application mobile véritablement professionnelle.