When releasing a major version
La gestion de la version peut être difficile, vous souhaitez généralement envoyer une mise à jour majeure lorsque des changements majeurs apparaissent pour les utilisateurs.
Mais la versionnage n'est pas fait pour cela, la version de l'application store est différente de la version native.
La version native est conçue pour gérer les changements de rupture dans le code
Par exemple, sur IOS, iOS 16 est la store version de Apple, mais la version code est 20A5283p (ils ne semblent pas utiliser SemVer là-bas)
Maintenant, cela est clair, nous ne les mélangeons pas et les utilisons pour ce pour quoi elles sont faites !
Mise à jour majeure
Dans votre application Capacitor, une mise à jour majeure est nécessaire lorsque des changements de rupture se produisent. Par exemple, une nouvelle cible IOS (15 à 16), ou une nouvelle version de Capacitor (3 à 4), ou un plugin (1.2 à 2.0) que vous utilisez a été mis à jour à une version majeure.
Ce changement signifie que toutes les outils doivent être alignés pour gérer le changement de rupture.
C'est pourquoi Capgo suit ce système.
Ainsi, si vous publiez une version majeure, Capgo ne l'envoyera pas à un utilisateur qui ne l'a pas installé depuis la boutique.
Ce comportement peut être personnalisé. Vous pouvez en savoir plus sur cela ici
Versions
Où Capgo trouve la version à comparer
IOS
Serait utilisé par Capgo pour comparer à la version JavaScript et trouver une mise à niveau majeure
Dans IOS la variable est définie dans votre projet ici ios/App/App/Info.plist sous la cléCFBundleShortVersionString ou ios/App/App.xcodeproj/project.pbxproj sous la clé MARKETING_VERSION si MARKETING_VERSION a été défini dans votre Info.plist fichier.
Vous pouvez contourner ce comportement en définissant la clé de version dans
capacitor.config.jsonfichier docs ici
Android
sera utilisé par Capgo pour comparer à la version JavaScript et trouver une mise à niveau majeure
dans Android, la variable est définie dans votre projet ici android/app/build.gradle sous la clé defaultConfig.versionName
Vous pouvez contourner ce comportement en définissant la clé de version dans
capacitor.config.jsonfichier docs ici
JavaScript
Serait utilisé par Capgo pour comparer avec la version Native et trouver une mise à jour majeure
en JavaScript, la variable est définie dans votre projet ici package.json sous la clé version
Exemple
Votre application Ionic est actuellement publiée avec la version 1.2.3 avec Capacitor 3
Vous effectuez la mise à niveau vers capacitor 4.
Vous devez mettre à jour votre numéro de version à 2.2.3, puis toutes vos packages incluent Capgo avec un avertissement de cette grande modification.
Lorsque vous publiez cette version sur Capgo et l'App Store.
Toutes les prochaines mises à jour en direct sur Capgo 2.2.4 ne sera jamais envoyé à l'utilisateur avec 1.2.3 la version. Seulement avec 2.2.3 la version.
Si vous suivez ce modèle, n'avez plus à vous inquiéter, tout est bien géré.
Si je ne suis pas en accord avec ce modèle
Dans ce cas, cela signifie que vous devez envoyer votre nouvelle application avec Capacitor 4 à Apple et Google, mais pas à Capgo.
Ensuite, vous devez attendre que 100% de vos utilisateurs aient l'application ou au moins 90%, ce qui prendra des mois, probablement.
Pendant ce temps, vous ne pouvez pas envoyer d'update avec Capgo, puisque les anciens utilisateurs ne peuvent pas obtenir la nouvelle version. Vous n'avez pas la possibilité de sélectionner uniquement certains utilisateurs pour recevoir l'update.
Continuez de la section Comment lancer une nouvelle version majeure dans capgo
Si vous utilisez Comment lancer une nouvelle version majeure dans capgo pour planifier le rollback et le contrôle de version, connectez-le avec Rollbacks pour les détails d'implémentation de Rollbacks, Version Targeting pour les détails d'implémentation de Version Targeting, Update Behavior pour les détails d'implémentation de Update Behavior, bundle pour les détails d'implémentation de bundle, et Capgo Mises à jour en temps réel pour le flux de travail du produit dans Capgo Mises à jour en temps réel.