Passer au contenu

Changements incompatibles

Cette documentation explique comment gérer les changements incompatibles dans votre application en utilisant des canaux versionnés. Cette approche vous permet de maintenir différentes versions de votre application tout en garantissant que les utilisateurs reçoivent des mises à jour compatibles.

Disons que vous avez :

  • Version de l’application 1.2.3 (ancienne version) - utilise le canal production
  • Version de l’application 2.0.0 (nouvelle version avec changements incompatibles) - utilise le canal v2
  • Mise à jour en direct 1.2.4 (compatible avec 1.2.3)
  • Mise à jour en direct 2.0.1 (compatible avec 2.0.0)

Stratégie : Toujours utiliser defaultChannel pour les versions majeures

Section titled “Stratégie : Toujours utiliser defaultChannel pour les versions majeures”

Approche recommandée : Définissez un defaultChannel pour chaque version majeure. Cela garantit que vous pouvez toujours envoyer des mises à jour à des groupes d’utilisateurs spécifiques sans dépendre de l’attribution dynamique de canal.

// Versions 1.x
defaultChannel: 'v1'
// Versions 2.x
defaultChannel: 'v2'
// Versions 3.x (futures)
defaultChannel: 'v3'

1. Créer un canal pour la nouvelle version

Section titled “1. Créer un canal pour la nouvelle version”
Terminal window
# Créer un canal pour la version 2.x
npx @capgo/cli channel create v2

2. Mettre à jour la configuration Capacitor pour la version 2.0.0

Section titled “2. Mettre à jour la configuration Capacitor pour la version 2.0.0”

Mettez à jour votre configuration Capacitor avant de compiler la version 2.0.0 pour l’app store :

capacitor.config.ts
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'Example App',
plugins: {
CapacitorUpdater: {
// ... autres options
defaultChannel: 'v2' // Tous les utilisateurs de 2.0.0 utiliseront le canal v2
}
}
};
export default config;

Créez des branches git séparées pour maintenir la compatibilité entre les versions de l’application :

Terminal window
# Créer et maintenir une branche pour les mises à jour de la version 1.x
git checkout -b v1-maintenance
git push origin v1-maintenance
# Votre branche main continue avec le développement de la version 2.x
git checkout main

Critique : Ne poussez jamais de bundles JavaScript vers des anciennes applications qui attendent du code/API natif qu’elles n’ont pas. Compilez toujours les mises à jour depuis la branche appropriée :

  • branche v1-maintenance : Pour les mises à jour vers les applications 1.x (canal production)
  • branche main : Pour les mises à jour vers les applications 2.x (canal v2)

4. Téléverser les bundles vers les canaux respectifs

Section titled “4. Téléverser les bundles vers les canaux respectifs”
Terminal window
# Pour les mises à jour 1.x : Compiler depuis la branche v1-maintenance
git checkout v1-maintenance
# Faites vos modifications compatibles 1.x ici
npx @capgo/cli bundle upload --channel production
# Pour les mises à jour 2.x : Compiler depuis la branche main
git checkout main
# Faites vos modifications 2.x ici
npx @capgo/cli bundle upload --channel v2
Terminal window
# Autoriser les applications à s'auto-attribuer au canal v2
npx @capgo/cli channel set v2 --self-assign

Compilez et déployez la version 2.0.0 sur l’app store. Tous les utilisateurs qui téléchargent cette version (que ce soit de nouveaux utilisateurs ou des utilisateurs existants qui mettent à niveau) utiliseront automatiquement le canal v2 car il est configuré dans le bundle de l’application.

Lorsque vous publiez la version 3.0.0 avec plus de changements incompatibles :

Terminal window
# Créer un canal pour la version 3.x
npx @capgo/cli channel create v3
// capacitor.config.ts pour la version 3.0.0
const config: CapacitorConfig = {
// ...
plugins: {
CapacitorUpdater: {
defaultChannel: 'v3' // Utilisateurs de la version 3.x
}
}
};

Maintenant vous pouvez pousser des mises à jour vers n’importe quelle version :

  • Canal production → Utilisateurs de la version 1.x
  • Canal v2 → Utilisateurs de la version 2.x
  • Canal v3 → Utilisateurs de la version 3.x

Une fois que tous les utilisateurs ont migré vers la version 2.x (comptez 3-4 mois) :

  1. Supprimez defaultChannel de votre configuration Capacitor
  2. Supprimez le canal v2 :
Terminal window
npx @capgo/cli channel delete v2
  1. Supprimez la branche v1-maintenance :
Terminal window
git branch -d v1-maintenance
git push origin --delete v1-maintenance

Testez toujours les mises à jour soigneusement dans chaque canal avant le déploiement

Maintenir les mises à jour de la version 1.x

Section titled “Maintenir les mises à jour de la version 1.x”

Pour envoyer des mises à jour compatibles avec la version 1.x :

  1. Basculez vers la branche v1-maintenance :
Terminal window
git checkout v1-maintenance
  1. Faites vos modifications et committez :
Terminal window
# Faites des modifications compatibles 1.x
git add .
git commit -m "Correction pour v1.x"
git push origin v1-maintenance
  1. Compilez et téléversez vers le canal production :
Terminal window
npx @capgo/cli bundle upload --channel production