Aller directement au contenu

Comportement de mise à jour

Lorsque vous publiez une mise à jour de 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 à attendre un téléchargement ou à redémarrer l'application au milieu d'une session.

L'Capgo’ mise à jour est conçue pour trouver un équilibre entre la livraison des mises à jour rapidement 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 si une nouvelle mise à jour est 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 obligés d'attendre les téléchargements.

Why This Approach?

Pourquoi Cette Approche?

En appliquant les mises à jour sur un événement de fond ou de fermeture, il existe quelques avantages clés pour l'expérience utilisateur :

  • Les utilisateurs ne sont pas interrompus par les invites de mise à jour ou contraints de attendre les 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équemment 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, ils peuvent perdre tout l'état non sauvegardé depuis que la mise à jour a été appliquée entre ces actions.

Pour atténuer cela, nous recommandons :

  • Enregistrer l'état fréquemment et le restaurer de manière gracieuse lorsque l'application reprend.

  • Éviter les 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 la mise à jour des mises à jour »

Vous pouvez avoir besoin de 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 d'une application avec une modification côté serveur.

Capgo fournit un setDelay une 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: Attendre jusqu'à une date et heure spécifique pour appliquer la mise à jour.
  • background: Attendre une durée minimale après que l'application est mise en arrière-plan pour appliquer la mise à jour.
  • nativeVersion: Attendre que soit installé un code natif avec une version minimale avant d'appliquer la mise à jour.
  • kill: Attendre jusqu'à 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.

politique dans votre Capgo config. autoUpdate policy in your Capacitor config.

autoUpdate Learn more in the Delta (manifest) Updates documentation capacitor.config.ts fichier, pas en JavaScript code. Il prend en charge ces valeurs :

  • false ou 'off': Désactiver la mise à jour automatique
  • true ou 'atBackground' (par défaut) : Télécharger automatiquement et appliquer lorsque l'application passe en arrière-plan
  • 'atInstall': Appliquer immédiatement uniquement après une mise à jour native ou une installation fraîche, sinon utiliser le flux de fond
  • 'onLaunch': Appliquer immédiatement à l'ouverture de l'application, sinon utiliser le flux de fond après le contrôle de lancement
  • 'always': Appliquer immédiatement chaque fois que la mise à jour automatique s'exécute
  • 'onlyDownload': Télécharger automatiquement, émettre updateAvailable, et ne pas définir automatiquement le prochain bundle
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 appliquera immédiatement une mise à jour dès que la téléchargement est terminé pendant 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.

Remarque que puisque autoUpdate est une configuration native, les modes d'application instantanée nécessitent une gestion supplémentaire dans votre JavaScript code.

If you want Capgo to check and download updates automatically but never apply them automatically, use autoUpdate: 'onlyDownload':

const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: 'onlyDownload',
},
},
};

après que le bundle est téléchargé. Votre application peut alors décider quand appeler updateAvailable ou afficher son propre prompt de mise à jour. CapacitorUpdater.set() Gestion Automatique de l'Ecran de Splash

Pour rendre les modes d'application instantanés plus faciles à utiliser, __CAPGO_KEEP_0__ fournit une

option qui gère automatiquement le cachage de l'écran de splash pour vous (disponible depuis la version 7.6.0) :

Si vous voulez que Capgo vérifie et télécharge les mises à jour automatiquement mais ne les applique jamais automatiquement, utilisez autoSplashscreen Copier dans le presse-papier

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 masque automatiquement l'écran de splash lorsque vous appliquez une mise à jour
  • Le plugin masque automatiquement l'écran de splash lorsque aucune mise à jour n'est nécessaire
  • Vous n'avez pas besoin de vous abonner manuellement aux 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();

The appReady event se déclenche une fois l'application a terminé de s'initialiser et d'appliquer les mises à jour en attente. C'est le moment où il est sécurisé de montrer l'interface utilisateur de l'application, car cela garantit que l'utilisateur verra la dernière version.

In addition to handling the appReady event, nous recommandons de définir la keepUrlPathAfterReload option de configuration sur true lorsque vous utilisez 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.

If you don’t handle the appReady event and set keepUrlPathAfterReload when using an instant apply mode, the user may briefly see a stale version of the app, be taken back to the initial route, or see a flicker as the update is applied.

Si vous ne gérez pas l'événement et n'avez pas défini

  • lorsque vous utilisez un mode d'application instantanée, l'utilisateur peut brièvement voir une version périmée de l'application, être redirigé vers l'itinéraire initial ou voir un éclatement lors de l'application de la mise à jour. autoSplashscreen Using an instant apply mode can be useful for delivering critical bug fixes or security patches, but it comes with some tradeoffs: L'utilisation d'un mode d'application instantanée peut être utile pour livrer des correctifs critiques ou des mises à jour de sécurité, mais cela implique quelques compromis : 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 avec soin la sauvegarde et la restauration de l'état pour assurer une transition fluide.

Si vous activez l'application instantanée, 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 préserver la localisation de l'utilisateur dans l'application.
  • Sauvegarder et restaurer l'état de l'application lorsqu'il est nécessaire 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 localisation déstabilisants.

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, Aperçu pour les détails d'implémentation dans Aperçu, Fonctionnalités pour le détail d'implémentation dans Fonctionnalités, Types de mise à jour pour le détail d'implémentation dans Types de mise à jour, et Démarrage pour le détail d'implémentation dans Démarrage.