Modifiche Incompatibili
Questa documentazione spiega come gestire modifiche incompatibili nella tua app utilizzando canali versionati. Questo approccio ti consente di mantenere diverse versioni della tua app assicurando che gli utenti ricevano aggiornamenti compatibili.
Scenario di Esempio
Section titled “Scenario di Esempio”Diciamo che hai:
- App versione 1.2.3 (vecchia versione) - usa canale production
- App versione 2.0.0 (nuova versione con modifiche incompatibili) - usa canale v2
- Aggiornamento live 1.2.4 (compatibile con 1.2.3)
- Aggiornamento live 2.0.1 (compatibile con 2.0.0)
Strategia: Usa Sempre defaultChannel per Versioni Maggiori
Section titled “Strategia: Usa Sempre defaultChannel per Versioni Maggiori”Approccio consigliato: Imposta un defaultChannel per ogni versione maggiore. Questo assicura che tu possa sempre inviare aggiornamenti a gruppi specifici di utenti senza fare affidamento sull’assegnazione dinamica dei canali.
// Release versione 1.xdefaultChannel: 'v1'
// Release versione 2.xdefaultChannel: 'v2'
// Release versione 3.x (futuro)defaultChannel: 'v3'1. Crea Canale per Nuova Versione
Section titled “1. Crea Canale per Nuova Versione”# Crea canale per versione 2.xnpx @capgo/cli channel create v22. Aggiorna Configurazione Capacitor per Versione 2.0.0
Section titled “2. Aggiorna Configurazione Capacitor per Versione 2.0.0”Aggiorna la tua configurazione Capacitor prima di compilare la versione 2.0.0 per l’app store:
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { // ... altre opzioni defaultChannel: 'v2' // Tutti gli utenti 2.0.0 useranno il canale v2 } }};
export default config;3. Gestisci Branch di Codice Separati
Section titled “3. Gestisci Branch di Codice Separati”Crea branch git separati per mantenere la compatibilità tra versioni app:
# Crea e mantieni un branch per aggiornamenti versione 1.xgit checkout -b v1-maintenancegit push origin v1-maintenance
# Il tuo branch main continua con sviluppo versione 2.xgit checkout mainCritico: Non inviare mai bundle JavaScript ad app vecchie che si aspettano codice/API native che non hanno. Compila sempre aggiornamenti dal branch appropriato:
- branch v1-maintenance: Per aggiornamenti ad app 1.x (canale production)
- branch main: Per aggiornamenti ad app 2.x (canale v2)
4. Carica Bundle ai Rispettivi Canali
Section titled “4. Carica Bundle ai Rispettivi Canali”# Per aggiornamenti 1.x: Compila dal branch v1-maintenancegit checkout v1-maintenance# Fai le tue modifiche compatibili 1.x quinpx @capgo/cli bundle upload --channel production
# Per aggiornamenti 2.x: Compila dal branch maingit checkout main# Fai le tue modifiche 2.x quinpx @capgo/cli bundle upload --channel v25. Abilita Auto-Assegnazione
Section titled “5. Abilita Auto-Assegnazione”# Permetti alle app di auto-assegnarsi al canale v2npx @capgo/cli channel set v2 --self-assign6. Distribuisci su App Store
Section titled “6. Distribuisci su App Store”Compila e distribuisci versione 2.0.0 sull’app store. Tutti gli utenti che scaricano questa versione (sia nuovi utenti che utenti esistenti che aggiornano) useranno automaticamente il canale v2 perché è configurato nel bundle dell’app.
Scalare a Versioni Future
Section titled “Scalare a Versioni Future”Quando rilasci versione 3.0.0 con più modifiche incompatibili:
# Crea canale per versione 3.xnpx @capgo/cli channel create v3// capacitor.config.ts per versione 3.0.0const config: CapacitorConfig = { // ... plugins: { CapacitorUpdater: { defaultChannel: 'v3' // Utenti versione 3.x } }};Ora puoi inviare aggiornamenti a qualsiasi versione:
- Canale
production→ Utenti versione 1.x - Canale
v2→ Utenti versione 2.x - Canale
v3→ Utenti versione 3.x
7. Pulizia (Dopo Migrazione)
Section titled “7. Pulizia (Dopo Migrazione)”Una volta che tutti gli utenti sono migrati alla versione 2.x (conta 3-4 mesi):
- Rimuovi
defaultChanneldalla tua configurazione Capacitor - Elimina il canale v2:
npx @capgo/cli channel delete v2- Elimina il branch v1-maintenance:
git branch -d v1-maintenancegit push origin --delete v1-maintenanceTesta sempre gli aggiornamenti accuratamente in ogni canale prima del deployment
Mantenere Aggiornamenti Versione 1.x
Section titled “Mantenere Aggiornamenti Versione 1.x”Per inviare aggiornamenti compatibili con versione 1.x:
- Passa al branch v1-maintenance:
git checkout v1-maintenance- Fai le tue modifiche e committa:
# Fai modifiche compatibili 1.xgit add .git commit -m "Fix per v1.x"git push origin v1-maintenance- Compila e carica al canale production:
npx @capgo/cli bundle upload --channel production