Comprendre les mises à jour en temps réel dans Capgo
Les 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 de l'application dans les magasins d'applications. Commençons à plonger profondément dans la manière dont Capgo implémente cette fonctionnalité.
Concepts de base
Une application Capacitor se compose de deux couches principales :
- Couche Web: Contient des fichiers HTML, CSS et JavaScript chargés dans la vue WebView
- Couche Native: Contient des éléments code spécifiques au plateau (Java/Kotlin pour Android, Swift pour iOS)
Le système de mise à jour en temps réel 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.
Implémentation 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 serveur: Pointe vers les fichiers qui chargeront à la prochaine redémarrage de l'application
Mise en œuvre Android
Sur Android, Capgo gère les chemins à travers :
// 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();
}
Mise en œuvre iOS
Sur iOS, les chemins sont gérés à travers :
// 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 une sécurité militaire de niveau grâce à une 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 vraie sécurité à zéro connaissance.
Architecture de Chiffrement 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 de niveau 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 Nulle: Contrairement à d'autres solutions d'actualisation OTA qui ne signent que les mises à jour, Capgo utilise un chiffrement de connaissance nulle réel. Cela signifie :
- Les contenus d'actualisation sont chiffrés avant l'envoi
- Les serveurs de Capgo n'ont que des données chiffrées
- La déchiffrement ne se produit que sur les appareils des utilisateurs finals
- Aucun intermédiaire ne peut accéder au contenu de vos mises à jour
-
Gestion des Clés Sécures:
- 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 Capgo Mises à jour en temps réel
Processus d'actualisation 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
- Même en cas de violation du serveur, les données restent sécurisées
-
Livraison Sécure:
- Mises à jour sont livrées par des canaux chiffrés
- Chaque instance d'application valide l'intégrité de la cryptage
- Mécanismes de réessai automatiques pour la déchiffrement échoué
-
Sécurité côté Client:
- Mises à jour sont vérifiées avant l'installation
- La déchiffrement échoué 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 les mises à jour de votre application restent protégées contre :
- attaques de l'homme du milieu
- violations du serveur côté serveur
- Modifications non autorisées
- Attentats de replay
- Manipulation de contenu
Cycle de mise à jour
Capgo’s processus de mise à jour 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 comportement est contrôlé par la 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
When une nouvelle version est détectée, si autoUpdate est activé :
- Le téléchargement démarre automatiquement
- Le suivi du progrès est effectué 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 l'application suivante en arrière-plan si
directUpdateest faux - Si l'installation échoue, le plugin effectue automatiquement un rollback :
Le plugin gère également automatiquement le stockage :
- Supprime les mises à jour échouées si
autoDeleteFailedest vrai - Supprime les anciennes versions si
autoDeletePreviousest vrai
Différer 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 et heure spécifique
- nativeVersion: Installez après la mise à jour native suivante
- kill: Installez après que l'application soit fermée
Cela est utile pour :
- Planifier les 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
États de mise à jour
Lors du processus automatique, les bundles passent par ces états :
- téléchargement: Téléchargement en cours
- en attente: Téléchargement terminé, 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'application
Apple App Store
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 :
“Les code interprétés peuvent être téléchargés dans une Application mais uniquement dans la mesure où de telles code: (a) ne changent pas l'objectif principal de l'Application en fournissant des fonctionnalités ou des fonctionnalité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 point de vente pour d'autres code ou applications, et (c) ne contournent pas la signature, le sandbox ou d'autres fonctionnalités de sécurité du système d'exploitation.”
Mises à jour de Capgo ne modifient que la couche web tout en respectant toutes les limites de sécurité du système.
Google Play Store ✅
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 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 étalés: Déployez les mises à jour progressivement
- Contrôle de version: Suivez toutes les versions déployées
- Support de Rollback: Récupération rapide des problèmes
- Mises à jour Delta: Télécharger uniquement les fichiers modifiés
Quand utiliser les Mises à jour en temps réel
Idéal pour :
- Corrections de bogues
- Améliorations de l'interface utilisateur
- Mises à jour de contenu
- Préférences de fonctionnalités
Non adapté pour :
- Changements natifs code
- Mises à jour de version majeure
- Correctifs de sécurité nécessitant des modifications natives
Continuez à partir de Comment les mises à jour en direct fonctionnent dans Capgo
Si vous utilisez Comment les mises à jour en direct fonctionnent dans Capgo pour planifier le travail de plugin natif, connectez-le 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, 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 de plugins d'entreprise Ionic, et Capgo Bâtiments natifs pour le flux de travail du produit dans Capgo Bâtiments natifs.