Sauter au contenu

Mise à jour du comportement

When vous sortez une mise à jour de votre Capgo application, vous voulez probablement que vos utilisateurs reçoivent cette mise à jour aussi rapidement que possible. Mais vous ne voulez pas non plus perturber leur expérience en leur forçant de attendre une téléchargement ou de redémarrer l'application au milieu d'une session.

Capgo’s comportement de mise à jour 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 de l'application :

  1. 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 (défaut 10 minutes).

  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. Lorsque le téléchargement est terminé, Capgo attend que l'utilisateur mette l'application en arrière-plan.

  4. Lorsque l'utilisateur ramène ensuite l'application en avant-plan, ils auront la version mise à jour.

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

L'application de mises à jour sur un événement de fond ou de fermeture présente quelques avantages clés pour l'expérience utilisateur :

  • Les utilisateurs ne sont pas interrompus par des invitations de mise à jour ou contraints de 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é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, 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 :

  • Sauvegarder 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).

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 d'installer une mise à jour :

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: Attendez une version native minimale pour être installée avant d'appliquer la mise à jour.
  • kill: Attendez l'événement de mort 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 est défini dans votre capacitor.config.ts fichier, et non en JavaScript code. Il prend en charge ces valeurs :

  • false ou 'off': Désactivez les vérifications automatiques de mise à jour
  • true ou 'atBackground' (par défaut) : Vérifiez et téléchargez automatiquement à chaque vérification en avant-plan, puis appliquez la mise à jour la prochaine fois que l'application passe en arrière-plan
  • 'atInstall': Appliquez immédiatement uniquement après une installation fraîche ou une mise à jour de l'application native ; sinon utilisez "atBackground" comportement
  • 'onLaunch': Appliquez immédiatement uniquement lorsque l'application est ramenée en avant-plan à partir d'un état tué (départ froid). Après cette première vérification, revenez à "atBackground" comportement
  • 'always': Vérifiez à chaque transition en avant-plan et appliquez immédiatement dès que des mises à jour sont disponibles
  • 'onlyDownload': Vérifiez et téléchargez automatiquement, émettez updateAvailable, et n'installez jamais le prochain bundle ou appliquez une mise à jour automatiquement
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érifie à chaque transition en avant-plan et applique immédiatement une mise à jour 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 tout en restant ouverte.

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-papiers

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

In this mode, the plugin emits 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 appReady __CAPGO_KEEP_0__ 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 L'événement se déclenche une fois l'application terminée de s'initialiser et d'appliquer tout 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 la keepUrlPathAfterReload option de configuration à true lorsque vous utilisez un mode d'application instantanée. Cela préserve l'adresse URL actuelle lorsqu'une mise à jour est rechargé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__, le utilisateur peut voir brièvement une version obsolète de l'application, être redirigé vers la route initiale ou voir un éclatement lorsque l'application est appliquée. 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 Le utilisateur peut voir un éclatement ou un état de chargement brièvement si vous n'avez pas géré correctement l'écran de splash (soit avec __CAPGO_KEEP_0__ ou le gestionnaire d'événements manuel).

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

  • L'emplacement du utilisateur dans l'application peut être perdu si __CAPGO_KEEP_0__ n'est pas défini, ce qui peut les dérouter. autoSplashscreen Vous devrez gérer soigneusement la sauvegarde et la restauration de l'état pour garantir une transition fluide. appReady Si vous activez l'application instantanée, nous vous recommandons :
  • Si vous n'avez pas géré l'événement et défini __CAPGO_KEEP_1__, le utilisateur peut voir brièvement une version obsolète de l'application, être redirigé vers la route initiale ou voir un éclatement lorsque l'application est appliquée.
  • 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 Le utilisateur peut voir un éclatement ou un état de chargement brièvement si vous n'avez pas géré correctement l'écran de splash (soit avec __CAPGO_KEEP_1__ ou le gestionnaire d'événements manuel).
  • Si l'application modifie l'état de l'application ou l'interface utilisateur, le utilisateur peut voir une modification perturbatrice au milieu d'une session.

L'emplacement du utilisateur dans l'application peut être perdu si __CAPGO_KEEP_1__ n'est pas défini, ce qui peut les dérouter.

  • Utiliser autoSplashscreen: true pour la configuration la plus simple, ou gérer manuellement le 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.

Si vous utilisez

Si vous utilisez

Si vous utilisez 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.