Aller directement au contenu

Comportement de mise à jour

Lorsque vous publiez une mise à jour pour 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.

Capgo gère les mises à jour de l'application de manière à trouver un équilibre entre la livraison rapide des mises à jour et la minimisation de la perturbation pour vos utilisateurs.

Par défaut, voici comment Capgo gère les mises à jour de l'application :

  1. Lors du lancement de l'application, le plugin Capgo vérifie s'il existe une mise à jour disponible.

  2. 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.

  3. Une fois le téléchargement terminé, Capgo attend que l'utilisateur quitte l'application ou la ferme complètement.

  4. Lorsque l'utilisateur lance à nouveau l'application, il exécutera la version mise à jour.

Ce flux garantit que les utilisateurs exécutent toujours la dernière version de votre application, sans jamais être interrompus par des invites de mise à jour ou contraints d'attendre des téléchargements.

Les utilisateurs ne sont pas interrompus par des invites de mise à jour ou contraints d'attendre des téléchargements au milieu d'une session.

  • Tip

  • Les mises à jour sont appliquées de manière fluide entre les sessions, donc 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 l'application en arrière-plan et la reprend rapidement, il peut perdre tout l'état non enregistré depuis que la mise à jour a été appliquée entre ces actions.

Pour atténuer cela, nous recommandons :

  • Enregistrer fréquemment l'état et le restaurer avec grâce 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 pourriez 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',
},
],
});

Cette exemple retarderait l'installation d'une mise à jour jusqu'après le 1er juin 2023 ET l'application aurait é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 jusqu'à l'événement de mort de l'application pour appliquer la mise à jour.

Vous pouvez combiner ces conditions pour contrôler précisément quand une mise à jour est installée.

Pour les mises à jour critiques ou les applications avec un état très simple, vous pouvez souhaitez appliquer une mise à jour dès qu'elle est téléchargée, sans attendre un événement de fond ou de suppression. Capgo prend en charge cela via l'option de configuration. directUpdate Recommandé : Utilisez les Mises à jour Delta (Manifeste) avec Mise à jour Directe

directUpdate est défini dans votre capacitor.config.ts fichier, pas dans JavaScript code. Il prend en charge trois valeurs :

  • false (par défaut) : Ne jamais faire de mises à jour directes (utiliser le comportement par défaut : télécharger au démarrage, définir lors de l'arrière-plan)
  • 'atInstall': Mise à jour directe uniquement lors de l'installation, de l'actualisation de l'application depuis la boutique, sinon agir comme directUpdate = faux
  • 'onLaunch': Mise à jour directe uniquement lors de l'installation, de l'actualisation de l'application depuis la boutique ou après la fermeture de l'application, sinon agir comme directUpdate = faux
  • 'always': Mise à jour directe dans tous les cas précédents (application installée, mise à jour depuis la boutique, après la fermeture de l'application ou la reprise de l'application), jamais agir comme directUpdate = faux
  • true (déprécié) : Même chose que 'always' pour la compatibilité en arrière
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: true,
directUpdate: 'always', // or 'atInstall' for updates only on app install/update
autoSplashscreen: true, // NEW: Automatically handle splashscreen
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false, // Still required when using directUpdate
},
},
};
export default config;

Lorsque directUpdate activé, Capgo appliquera immédiatement une mise à jour dès que le téléchargement est terminé lors d'une vérification de mise à jour, même si l'utilisateur utilise actuellement l'application. Sans vérification périodique activée, cela signifie que les mises à jour ne seront appliquées que lorsque l'application démarre ou reprend de l'arrière-plan.

Notez que puisque directUpdate est une configuration native, elle nécessite une gestion supplémentaire dans votre JavaScript code.

Pour rendre directUpdate easier to use, Capgo provides an autoSplashscreen fournit une

const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: true,
directUpdate: 'always', // or 'atInstall'
autoSplashscreen: true, // Automatically hide splashscreen
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false,
},
},
};

Copier dans le presse-papier autoSplashscreen Lorsque

  • Le plugin cache automatiquement l'écran de chargement lorsqu'une mise à jour est appliquée
  • Le plugin cache automatiquement l'écran de chargement lorsqu'aucune mise à jour n'est nécessaire
  • Vous n'avez pas besoin d'écouter manuellement les appReady ou d'appeler SplashScreen.hide()

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

L' appReady événement se déclenche une fois l'application terminée de s'initialiser et d'appliquer toute mise à jour en attente. C'est le point auquel il est sécurisé de montrer l'interface utilisateur de votre application, car il s'assure que l'utilisateur verra la dernière version.

En plus de gérer le appReady lors de l'événement, nous recommandons de définir l'option de configuration à keepUrlPathAfterReload lors de l'utilisation de true Cela préserve l'actuelle URL de chemin lors du rechargement de l'application en raison d'une mise à jour, ce qui aide à maintenir la position de l'utilisateur dans l'application et à réduire la désorientation. directUpdateSi vous n'abordez pas l'événement et que vous ne définissez pas

lors de l'utilisation de appReady l'utilisateur peut brièvement voir une version obsolète de l'application, être redirigé vers la route initiale ou voir un éclatement lors de l'application de la mise à jour. keepUrlPathAfterReload L'utilisation de directUpdatepeut être utile pour livrer des correctifs critiques ou des mises à jour de sécurité, mais elle comporte quelques compromis :

L'utilisateur peut voir un éclatement ou un état de chargement temporaire lors de l'application de la mise à jour si vous n'abordez pas correctement l'écran de splash (soit avec directUpdate ou une mise à jour manuelle

  • __CAPGO_KEEP_0__ autoSplashscreen __CAPGO_KEEP_1__ appReady gestion 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 keepUrlPathAfterReload n'est pas défini, ce qui pourrait les dérouter.
  • Vous devrez gérer soigneusement la sauvegarde et la restauration de l'état pour assurer une transition fluide.

Si vous activez directUpdate, nous recommandons :

  • Utiliser autoSplashscreen: true pour la configuration la plus simple, ou gérer manuellement l' appReady événement si vous avez besoin de logique personnalisée.
  • Définir keepUrlPathAfterReload à true pour conserver 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.