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 :
- Layer Web: Contient des fichiers HTML, CSS et JavaScript chargés dans le WebView
- 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
-
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.
-
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
-
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é
-
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é
-
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
-
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
-
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é :
- Le téléchargement démarre automatiquement
- Le progrès est suivi internement
- Les téléchargements échoués sont réessayés automatiquement à chaque ouverture de l'application
- 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
directUpdateest vrai - On la prochaine mise en arrière-plan de l'application si
directUpdateest faux - Le roulage automatique si l'installation échoue
Le plugin gère également automatiquement le stockage :
- Supprime les mises à jour échouées si
autoDeleteFailedest vrai - Nettoie les anciennes versions si
autoDeletePreviousest 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 :
- téléchargement: Téléchargement en cours
- en attente: Téléchargement complet, en attente d'installation
- réussi: Mise à jour installée et active
- 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
- Déploiements Phasés: Déployez les mises à jour progressivement
- 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).
- Rollback Support: Rapide récupération des problèmes
- 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.