Vai al contenuto

Auto Aggiornamento

Questa documentazione spiegherà come eseguire il tuo server di aggiornamento automatico

Servire il bundle

Assicurati che il tuo bundle sia servito tramite HTTPS e che il server abbia gli header CORS corretti per consentire all’app di scaricare l’aggiornamento es. https://myserver.com/app/updates/updates.json

Se non hai familiarità con il serving di un bundle, ti consigliamo di provare Capgo Cloud o vedere un esempio qui:

Configurazione

Aggiungi un updateUrl al tuo capacitor.config.json

{
"plugins": {
"CapacitorUpdater": {
"updateUrl": "https://myserver.com/app/updates/updates.json",
}
}
}

API di aggiornamento

Il plugin effettuerà una chiamata POST alla tua API ogni volta che l’app viene aperta, con questo corpo:

interface AppInfos {
"platform": "ios" | "android",
"device_id": "UUID_of_device_unique_by_install",
"app_id": "APPID_FROM_CAPACITOR_CONFIG",
"custom_id": "your_custom_id_set_on_runtime",
"plugin_version": "PLUGIN_VERSION",
"version_build": "VERSION_NUMBER_FROM_NATIVE_CODE",
"version_code": "VERSION_CODE_FROM_NATIVE_CODE",
"version_name": "LAST_DOWNLOADER_VERSION" | "builtin"
"version_os": "VERSION_OF_SYSYEM_OS",
"is_emulator": boolean,
"is_prod": boolean,
}

L’API del server dovrebbe rispondere, in JSON, al plugin capacitor-updater con questi dati se è necessario un aggiornamento:

{
"version": "123",
"url": "https://myserver.com/app/updates/my-new-app-200.zip"
}

In modalità Auto-update il server dovrebbe confrontare le versioni e restituire quella corretta, se la chiave URL è presente, il plugin avvia il processo di download

Se aggiungi le chiavi “message” ed “error”, la versione non verrà impostata e il messaggio verrà invece visualizzato nei log

La chiave version dovrebbe essere nel formato semver

Lo zip dovrebbe avere index.html come file nella root, o una sola cartella nella root con index.html all’interno

Puoi utilizzare il comando della CLI per comprimere il tuo bundle:

Crea un bundle con i tuoi file da servire dal tuo server
npx @capgo/cli bundle zip --path [/path/to/my/bundle]