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 dans les applications Capacitor, permettant des mises à jour en temps réel sans soumission de l'App Store. Allons plus loin dans la compréhension de la mise en œuvre de Capgo.
Concepts de base
Une application Capacitor se compose de deux couches principales :
- Layer Web: Contient les fichiers HTML, CSS et JavaScript chargés dans le WebView
- Layer natif: Contient les code spécifiques à la plateforme (Java/Kotlin pour Android, Swift pour iOS)
Le système d'actualisation 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.
Mise en œuvre technique
Chemins de serveur dans Capacitor
Capgo gère deux chemins critiques :
- Chemins de serveur actuel: Point vers les fichiers chargés actuellement dans WebView
- Prochain chemin de serveur: Point vers les fichiers qui chargeront à la prochaine redémarrage de l'application
Mise en œuvre Android
Sur Android, Capgo gère les chemins par l'intermédiaire :
// 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 à 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 des mesures de sécurité militaires 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 sécurité à connaissance nulle réelle.
Architecture de l'Encryption de Bout en Bout
-
L'Encryption de Bout en Bout (E2EE): Chaque bundle 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.
-
Architecture à Connaissance Nulle: Contrairement à d'autres solutions de mise à jour OTA qui ne signent que les mises à jour, Capgo emploie une encryption à connaissance nulle réelle. Cela signifie :
- Les contenus de mise à jour sont chiffrés avant l'upload
- Les serveurs Capgo ne stockent que des données chiffrées
- La déchiffrement ne se produit que sur les appareils des utilisateurs finals
- No intermédiaire ne peut accéder à votre contenu de mise à jour
-
Gestion de Clés Sécurisée:
- 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 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 à Chacune des Étapes dans Capgo Mises à Jour en Temps Réel
Processus de Sécurité des Mises à Jour
-
Encryption Pré-Envoi:
- 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ûr:
- Les bundles chiffrés sont stockés sur le CDN mondial de Capgo
- Aucune donnée texte brute ne touche jamais nos serveurs
- Même dans le cas d'une violation de serveur, les données restent sécurisées
-
Livraison Sûre:
- Les mises à jour sont livrées par des canaux chiffrés
- Chaque instance d'application valide l'intégrité de la chiffrage
- Sécurité Client
-
Les mises à jour sont vérifiées avant installation:
- La déchiffrage échouée déclenche un roulage automatique
- La sécurité côté client
- 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'applications restent protégées contre :
- Attentats au milieu de la chaîne
- Violations du côté serveur
- Modifications non autorisées
- Attentats de replay
- Contrefaçon de contenu
Cycle de mise à jour
Le processus d'Capgo 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 :
- Lorsque l'application démarre
Ce comportement est contrôlé par le autoUpdate paramètre :
// capacitor.config.json
{
"plugins": {
"CapacitorUpdater": {
"autoUpdate": true // Enable automatic updates
}
}
}
Vous pouvez également vérifier manuellement avec 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 se réessayent 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 d'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
directUpdateest vrai - À la prochaine mise en arrière-plan de l'application si
directUpdateest faux - Auto-rollback en cas d'échec de l'installation
Le plugin gère également automatiquement le stockage :
- Supprime les mises à jour échouées si
autoDeleteFailedest vrai - Supprime les anciennes versions si
autoDeletePreviousest vrai
Retarder 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: Installer lorsque l'application passe en arrière-plan
- date: Installer après une date et heure spécifique
- version native: Installer après la prochaine mise à jour native
- kill: Installer après que l'application ait été fermée
Cela est utile pour :
- Planification des mises à jour pendant les heures creuses
- Coordination des mises à jour avec l'activité de l'utilisateur
- Assurer une expérience de mise à jour fluide
- Prévenir les interruptions pendant les tâches critiques
États de mise à jour
Pendant 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: La mise à jour a échoué (déclenche un rollback automatique)
Conformité de l'application
Apple App Store ✅
Mises à jour en direct 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 incohérentes avec l'intention et l'annonce de l'objectif 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.”
Les 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 direct sont conformes aux politiques de Google Play. La politique spécifique de l'abuse de dispositif et de réseau indique :
“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 une vue web ou navigateur).”
Puisque Capgo ne met à jour que le contenu de la vue web, cela tombe dans ces directives autorisées.
Meilleures pratiques
- Déploiements Phasés: Déployez les mises à jour progressivement
- Gestion de Version: Suivez toutes les versions déployées
- Support de Retour en Arrière: Récupération rapide des problèmes
- Mises à Jour Delta: Téléchargez uniquement les fichiers modifiés
Quand Utiliser les Mises à Jour en Direct
Parfait pour :
- Corrections de bogues
- Améliorations de l'interface utilisateur
- Mises à jour de contenu
- Fonctionnalités de mise en pause
Pas adapté pour :
- Changements natifs de code
- Mises à jour de version majeure
- Correctifs de sécurité nécessitant des changements natifs
Continuez de la section Comment fonctionnent les mises à jour en direct dans Capgo
Si vous utilisez Comment fonctionnent les mises à jour en direct 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 les détails d'implémentation dans Capacitor Plugins par Capgo, Ajout ou Mise à Jour de Plugins pour les détails d'implémentation dans Ajout ou Mise à Jour de Plugins, Alternatives de Plugins Entreprise Ionic pour le flux de travail du produit dans Alternatives de Plugins Entreprise Ionic, et Capgo Builds Natives pour le flux de travail du produit dans Capgo Builds Natives.