Sauter au contenu

Comportement de Mise à Jour

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.

Par défaut, voici comment Capgo gère les mises à jour des applications :

  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 que le téléchargement est terminé, Capgo attend que l'utilisateur fasse en arrière-plan l'application ou la supprime complètement.

  4. Lorsque l'utilisateur lance à nouveau l'application, ils seront en train de lancer la version mise à jour.

Ce flux garantit que les utilisateurs sont toujours en train de lancer la dernière version de votre application, sans jamais être interrompus par des invitations à mettre à jour ou obligés d'attendre des téléchargements.

L'application de mises à jour sur un événement de background 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 obligés d'attendre des téléchargements au milieu d'une session.

  • Les mises à jour sont appliquées de manière fluide entre les sessions, afin que l'expérience de lancement de l'application soit 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 son application en arrière-plan et la réactive rapidement, il peut perdre tout l'état non enregistré depuis que l'actualisation 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 est réactivée.

  • É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 d'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 l'actualisation 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 aurait été mise en arrière-plan pendant au moins 60 secondes.

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

For les mises à jour critiques ou les applications avec un état très simple, vous pouvez peut-être 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 le autoUpdate policy dans votre Capacitor config.

autoUpdate s'est défini dans votre capacitor.config.ts fichier, pas dans 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 installation fraîche ou une mise à jour d'applications natives, sinon utilisez 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 Mise à jour automatique s'exécute
  • 'onlyDownload': Télécharger automatiquement, émettre, et ne pas définir le prochain bundle automatiquement updateAvailableCopier dans le presse-papier
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;

, __CAPGO_KEEP_0__ appliquera immédiatement une mise à jour dès que la téléchargement est terminé pendant un contrôle de mise à jour, même si l'utilisateur utilise actuellement l'application. Sans la mise à jour périodique activée, cela signifie que les mises à jour ne seront appliquées que lorsque l'application démarre ou reprend depuis l'arrière-plan. autoUpdate: 'always', Capgo will immediately apply an update as soon as the download completes during an update check, even if the user is actively using the app. Without periodic checking enabled, this means updates will only be applied when the app starts or resumes from background.

Notez que, en raison de la configuration native, les modes d'application instantanée nécessitent quelques manipulations supplémentaires dans votre __CAPGO_KEEP_0__ JavaScript. autoUpdate is a native configuration, instant apply modes require some additional handling in your JavaScript code.

Si vous souhaitez que __CAPGO_KEEP_0__ vérifie et télécharge les mises à jour automatiquement mais ne les applique jamais automatiquement, utilisez

Copier dans le presse-papier

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',
},
},
};

translations updateAvailable après le téléchargement d'un bundle. Votre application peut ensuite décider quand appeler CapacitorUpdater.set() ou afficher son propre prompt de mise à jour.

Pour rendre les modes d'application instantanés plus faciles à utiliser, Capgo fournit une autoSplashscreen option qui gère automatiquement la suppression de l'écran de chargement pour vous (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 cache automatiquement l'écran de chargement lorsque la mise à jour est appliquée
  • Le plugin cache automatiquement l'écran de chargement lorsque la mise à jour n'est pas nécessaire
  • Vous n'avez pas besoin d'écouter manuellement pour appReady [events ou appel] 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();

Le appReady événement se déclenche une fois l'application terminée d'être initialisée et d'avoir appliqué les mises à 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 l'événement appReady [events ou appel], 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'adresse URL actuelle lorsqu'une mise à jour est appliquée, ce qui aide à maintenir la position de l'utilisateur dans l'application et à réduire la désorientation.

If vous n'avez pas géré l'événement et défini __CAPGO_KEEP_0__ lors de l'utilisation d'un mode d'application instantanée, l'utilisateur peut voir brièvement 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. appReady En utilisant un mode d'application instantanée peut être utile pour livrer des correctifs de bogues critiques ou des correctifs de sécurité, mais cela implique quelques compromis : keepUrlPathAfterReload Si vous n'avez pas géré correctement l'écran de chargement (soit avec __CAPGO_KEEP_0__ ou un traitement manuel de l'événement), l'utilisateur peut voir un éclat ou un état de chargement pendant que la mise à jour est appliquée.

Si la mise à jour modifie l'état de l'application ou l'interface utilisateur, l'utilisateur peut voir une modification perturbatrice au milieu d'une session.

  • Si __CAPGO_KEEP_0__ n'est pas défini, la localisation de l'utilisateur dans l'application peut être perdue, ce qui peut les dérouter. autoSplashscreen Vous devrez soigneusement gérer la sauvegarde et la restauration de l'état pour garantir une transition fluide. appReady Si vous activez l'application instantanée, nous vous recommandons :
  • __CAPGO_KEEP_0__
  • l'écran de chargement keepUrlPathAfterReload l'événement
  • l'événement

l'écran de chargement

  • Utiliser autoSplashscreen: true pour la mise en place la plus simple, ou gérer manuellement l' appReady Si vous avez besoin de logique personnalisée.
  • Définir keepUrlPathAfterReload pour conserver la localisation de l'utilisateur dans l'application. true Sauvegarder et restaurer l'état de l'application à mesure de l'application 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_KEEP_0__ offre la flexibilité de personnaliser quand et comment les mises à jour sont appliquées.

In most cases, the default update behavior provides the best balance of delivering updates quickly and minimizing disruption. But for apps with specific needs, Capgo provides the flexibility to customize when and how updates are applied.

Titre de la section « Continuez de la section Mise à jour de l'application »

Si vous utilisez

Capgo Mise à jour du comportement pour planifier la livraison d'actualisations en direct, connectez-le à 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, Caractéristiques pour les détails d'implémentation dans Caractéristiques, Types d'actualisations pour les détails d'implémentation dans Types d'actualisations, et Démarrage rapide pour les détails d'implémentation dans Démarrage rapide.