Comportement de mise à jour
Copier un prompt de configuration avec les étapes d'installation et le guide Markdown complet pour ce plugin.
Lorsque vous mettez à jour votre application Capgo, vous souhaitez probablement que vos utilisateurs reçoivent cette mise à jour le plus rapidement possible. Mais vous ne voulez pas non plus perturber leur expérience en leur forçant de attendre une mise à jour ou de redémarrer l'application au milieu d'une session.
Le comportement de mise à jour de Capgo est conçu pour trouver un équilibre entre la livraison des mises à jour rapidement et la minimisation de la perturbation pour vos utilisateurs.
Flux de mise à jour par défaut
Section intitulée « Flux de mise à jour par défaut »Par défaut, voici comment Capgo gère les mises à jour d'applications :
-
Lorsque l'application passe en avant-plan, le plugin Capgo vérifie si une nouvelle mise à jour est disponible. Alors que l'application reste ouverte, il vérifie à nouveau à intervalles réguliers contrôlés par
periodCheckDelay(par défaut 10 minutes). -
Si une mise à jour est trouvée, elle est téléchargée en arrière-plan tandis que l'utilisateur continue à utiliser la version actuelle de l'application.
-
Une fois le téléchargement terminé, Capgo attend que l'utilisateur mette l'application en arrière-plan.
-
Lorsque l'utilisateur ramène l'application en avant-plan, ils seront en train de lancer la version mise à jour.
Cette flux garantit que les utilisateurs disposent toujours de la dernière version de votre application, sans jamais être interrompus par des invitations à mettre à jour ou contraints de attendre des téléchargements.
Pourquoi Cette Approche?
Section intitulée “Pourquoi Cette Approche?”L'application de mises à jour lors d'un événement de fond ou de suppression présente quelques avantages clés pour l'expérience utilisateur :
-
Les utilisateurs ne sont pas interrompus par des invitations à mettre à jour ou contraints d'attendre des téléchargements au milieu d'une session.
-
Les mises à jour sont appliquées de manière fluide entre les sessions, de sorte que l'expérience de lancement de l'application est toujours fraîche.
-
Vous pouvez livrer des mises à jour fréquentes sans vous soucier de perturber les utilisateurs actifs.
Le principal inconvénient est que si un utilisateur met en arrière-plan et reprend rapidement votre application, il peut perdre tout l'état non enregistré depuis que la mise à jour a été appliquée entre ces actions.
To atténuer cela, nous recommandons :
-
Enregistrer l'état fréquemment et le restaurer de manière gracieuse lorsque l'application reprend.
-
Éviter des mises à jour très fréquentes qui modifient de grandes parties de l'état de l'application.
-
Considérer la personnalisation du comportement de mise à jour pour les flux sensibles (voir ci-dessous).
Personnaliser Lorsque les Mises à Jour Sont Appliquées
Section intitulée “Personnaliser Lorsque les Mises à Jour Sont Appliquées”Dans certains cas, vous pouvez vouloir plus de contrôle sur l'exact moment où une mise à jour est appliquée. Par exemple, vous pourriez vouloir vous assurer que l'utilisateur a terminé un flux en cours avant de mettre à jour, ou coordonner une mise à jour de l'application avec une modification côté serveur.
Capgo fournit une setDelay fonction qui vous permet de spécifier des conditions qui doivent être remplies avant que la mise à jour soit installée :
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setMultiDelay({ delayConditions: [ { kind: 'date', value: '2023-06-01T00:00:00.000Z', }, { kind: 'background', value: '60000', }, ],});Cet exemple retarderait l'installation d'une mise à jour jusqu'après le 1er juin 2023 ET l'application a été mis en arrière-plan pendant au moins 60 secondes.
Les conditions de retard disponibles sont :
date: Attendez jusqu'à une date et heure spécifique pour appliquer la mise à jour.background: Attendez une durée minimale après que l'application est mise en arrière-plan pour appliquer la mise à jour.nativeVersion: Attendez l'installation d'un fichier binaire natif avec une version minimale avant d'appliquer la mise à jour.kill: Attendez l'événement de suppression de l'application suivant pour appliquer la mise à jour.
Vous pouvez combiner ces conditions pour contrôler précisément quand une mise à jour est installée.
Section intitulée “Appliquer les Mises à Jour Immédiatement”
Pour les mises à jour critiques ou les applications avec un état très simple, vous pouvez vouloir appliquer une mise à jour dès qu'elle est téléchargée, sans attendre un événement de background ou de suppression. __CAPGO_KEEP_0__ prend en charge cela via leFor critical updates or apps with very simple state, you may want to apply an update as soon as it’s downloaded, without waiting for a background or kill event. Capgo supports this via the autoUpdate politique dans votre Capacitor config.
autoUpdate est défini dans votre capacitor.config.ts fichier, et non en JavaScript code. Il prend en charge ces valeurs :
falseou'off': Désactiver les vérifications automatiques de mise à jourtrueou'atBackground'(par défaut) : Vérifier et télécharger automatiquement à chaque vérification en avant-plan, puis appliquer la mise à jour la prochaine fois que l'application passe en arrière-plan'atInstall': Appliquer immédiatement uniquement après une installation fraîche ou une mise à jour de l'application native ; sinon utiliser"atBackground"le comportement'onLaunch': Appliquez immédiatement uniquement lorsque l'application est ramenée à l'avant-plan à partir d'un état tué (démarrage froid). Après cette première vérification, revenez à la"atBackground"comportement'always': Vérifiez à chaque transition vers l'avant-plan et appliquez immédiatement chaque fois qu'une mise à jour est disponible'onlyDownload': Vérifiez et téléchargez automatiquement, émettezupdateAvailable, et n'appliquez jamais le prochain bundle ou mettez à jour automatiquement
Testez une Build Native Sans Mises à Jour en Ligne
Titre de la section « Testez une Build Native Sans Mises à Jour en Ligne »Voir Testez les Builds Native Sans Mises à Jour pour les garanties de configuration de version native, de politique de canal et de CI.
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'always', // or 'atInstall' for updates only on app install/update autoSplashscreen: true, keepUrlPathAfterReload: true, }, SplashScreen: { launchAutoHide: false, // Required when using instant apply with autoSplashscreen }, },};
export default config;Avec autoUpdate: 'always', Capgo vérifications à chaque transition en avant-plan et appliquez une mise à jour immédiatement dès que la téléchargement est terminé pendant cette vérification, même si l'utilisateur utilise actuellement l'application. Les vérifications périodiques contrôlées par periodCheckDelay peuvent déclencher le même comportement d'application immédiate pendant que l'application reste ouverte.
Notez que parce que autoUpdate est une configuration native, les modes d'application instantanée nécessitent une gestion supplémentaire dans votre JavaScript code.
Téléchargement Automatique Sans Application
Section intitulée “Téléchargement Automatique Sans Application”Si vous souhaitez que Capgo vérifie et télécharge les mises à jour automatiquement mais ne les applique jamais automatiquement, utilisez autoUpdate: 'onlyDownload':
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'onlyDownload', }, },};Dans ce mode, le plugin émet updateAvailable après le téléchargement d'un bundle. Votre application peut ensuite décider quand appeler CapacitorUpdater.set() ou afficher sa propre fenêtre de mise à jour.
Gestion Automatique de la Fenêtre de Splash
Section intitulée “Gestion Automatique de la Fenêtre de Splash”Pour rendre les modes d'application instantanée plus faciles à utiliser, Capgo fournit un autoSplashscreen option qui gère automatiquement la suppression de l'écran de splash (disponible depuis la version 7.6.0) :
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'always', // or 'atInstall' autoSplashscreen: true, // Automatically hide splashscreen keepUrlPathAfterReload: true, }, SplashScreen: { launchAutoHide: false, }, },};Lorsque autoSplashscreen est activé :
- Le plugin supprime automatiquement l'écran de splash lorsqu'une mise à jour est appliquée
- Le plugin supprime automatiquement l'écran de splash lorsqu'aucune mise à jour n'est nécessaire
- Vous n'avez pas besoin de vous connecter manuellement aux
appReadyou d'appelerSplashScreen.hide()
Gestion manuelle de l'écran de splash
Sous-titre “Gestion manuelle de l'écran de splash”Si vous préférez un contrôle manuel ou avez besoin de logique personnalisée, vous pouvez désactiver autoSplashscreen et le gérer vous-même :
import { CapacitorUpdater } from '@capgo/capacitor-updater';import { SplashScreen } from '@capacitor/splash-screen';
CapacitorUpdater.addListener('appReady', () => { // Hide splash screen SplashScreen.hide();});
CapacitorUpdater.notifyAppReady();Le appReady événement se déclenche une fois l'application a terminé de s'initialiser et d'appliquer les mises à jour en attente. C'est le point auquel il est sécurisé de montrer l'interface utilisateur de l'application, car il s'assure que l'utilisateur verra la dernière version.
En plus de gérer l' appReady événement, nous recommandons de définir l'option de configuration keepUrlPathAfterReload pour true lors de l'utilisation d'un mode d'application instantanée. Cela préserve l'itinéraire actuel de l'application lorsqu'elle est rechargée en raison d'une mise à jour, ce qui aide à maintenir la position de l'utilisateur dans l'application et à réduire la désorientation.
Si vous n'avez pas géré l' appReady événement et défini keepUrlPathAfterReload lors de l'utilisation d'un mode d'application instantanée, l'utilisateur peut brièvement voir une version obsolète de l'application, être renvoyé à la route initiale ou voir un éclatement lors de l'application de la mise à jour.
L'utilisation d'un mode d'application instantanée peut être utile pour livrer des correctifs de bogues critiques ou des correctifs de sécurité, mais elle comporte quelques compromis :
- L'utilisateur peut voir un éclat ou un état de chargement pendant l'application de la mise à jour si vous n'avez pas correctement géré le presse-papier (soit avec __CAPGO_KEEP_0__ ou __CAPGO_KEEP_1__ )
autoSplashscreenou manuelappReadygestion des événements). - Si la mise à jour modifie l'état de l'application ou l'interface utilisateur, l'utilisateur peut voir un changement disruptif au milieu d'une session.
- La localisation de l'utilisateur dans l'application peut être perdue si
keepUrlPathAfterReloadn'est pas défini, ce qui pourrait les dérouter. - Vous devrez gérer avec soin la sauvegarde et la restauration de l'état pour assurer une transition fluide.
Si vous activez l'application instantanée, nous vous recommandons :
- Utiliser
autoSplashscreen: truepour la configuration la plus simple, ou gérer manuellement leappReadyévénement si vous avez besoin de logique personnalisée. - Définir
keepUrlPathAfterReloadàtrueconserver la position de l'utilisateur dans l'application. - Enregistrer et restaurer l'état de l'application selon les besoins pour éviter de perdre le progrès de l'utilisateur.
- Tester soigneusement le comportement de mise à jour de votre application pour vous assurer qu'il n'y a pas de transitions brusques, d'état perdu ou de changements de position déconcertants.
Dans la plupart des cas, le comportement de mise à jour par défaut fournit la meilleure balance entre la livraison rapide des mises à jour et la minimisation de la perturbation. Mais pour les applications ayant des besoins spécifiques, Capgo offre la flexibilité de personnaliser quand et comment les mises à jour sont appliquées.
Continuez de la section Mise à jour de l'application
Titre de la section « Continuez de la section Mise à jour de l'application »Si vous utilisez Mise à jour de l'application pour planifier la livraison de mises à jour en direct, connectez-le avec Capgo Mises à jour en direct pour le flux de travail du produit dans Capgo Mises à jour en direct, Vue d'ensemble pour les détails d'implémentation dans Vue d'ensemble Fonctionnalités pour les détails d'implémentation dans Fonctionnalités Types de mise à jour pour les détails d'implémentation dans Types de mise à jour, et Démarrage pour les détails d'implémentation dans Démarrage.