Vai al contenuto

Pengenalan - Pembaruan Otomatis

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

Prima di iniziare

Se usi questo lavoro per conto tuo, non posso che suggerirti di supportare il mio lavoro attraverso questo

Ho fatto una grande scommessa rendendo open source tutto il prezioso codice che ho costruito qui

Avrei potuto tenerlo per me e metterci un prezzo alto

Inoltre, voglio concentrarmi sugli strumenti Capgo e renderlo un business aperto e trasparente

Allo stesso modo, penso che renderebbe il nostro mondo un posto migliore aprendo invece di combattere e nascondere

Ma per renderlo possibile, tutti noi dobbiamo fare la nostra parte, incluso te 🥹

Se le offerte di capgo non ti si addicono, allora stabilisci il tuo prezzo e sostieni un Maker bootstrapped QUI alle tue condizioni

Installazione rapida

npm install @capgo/capacitor-updater
npx cap sync

Configurazione

Devi configurare il plugin per utilizzare il tuo URL in questo modo:

{
"plugins": {
"CapacitorUpdater": {
"updateUrl": "https://TUOURL",
}
}
}

🚧 In android non è consentito richiedere HTTP, per scopi di test consentilo

API di aggiornamento

Il plugin farà 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,
}

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

{
"version": "123",
"url": "https://path_to_the_zip_file_of_the_codecom"
}

In Auto-update il server dovrebbe fare il lavoro di confrontare la versione e restituire quella giusta, se la chiave URL è presente, il plugin avvia il processo di download

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

La chiave version deve essere nel formato semver

Lo zip dovrebbe avere indexhtml come file alla radice, o una sola cartella alla radice con indexhtml all’interno

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

Terminal window
npx @capgo/cli bundle zip --path [/path/to/my/bundle]

Crittografia end-to-end

A partire dalla versione 4150 il plugin consente di inviare aggiornamenti crittografati

Puoi utilizzare questa funzionalità creando una chiave privata npx @capgo/cli key create

Quindi crittografi il tuo file zip con npx @capgo/cli encrypt [path/to/zip]

Il comando ti stamperà una ivSessionKey che deve essere inviata con il tuo payload di aggiornamento nella chiave session_key
Quindi la tua app potrà utilizzare la chiave privata per decrittare la session_key e utilizzare la session_key decrittata per decrittare l’aggiornamento

Scopri di più qui:

API delle statistiche

A partire dalla versione 130 il sistema di aggiornamento invia statistiche!

Per impostazione predefinita, tutte le statistiche vengono inviate al nostro server per comprenderne l’utilizzo

💡 Nessun dato privato viene inviato per le statistiche, solo UUID casuali, aggiornamento versione, versione app nativa, piattaforma, azione e ID app

Se vuoi inviare i dati al tuo server invece, modifica la configurazione qui sotto:

// capacitorconfigjson
{
"appId": "*******",
"appName": "Name",
"plugins": {
"CapacitorUpdater": {
"statsUrl": "TUO_URL"
}
}
}

Ciò che il tuo server riceverà è:

interface AppInfosStats {
"action": "set", // può essere set, delete, set_fail, reset, revert
// Poi sono le stesse informazioni dell'aggiornamento
"app_id": "*******", // identificatore app nello store
"device_id": "*******", // id univoco per installazione app
"platform": "ios", // o android
"custom_id": "user_1", // rappresenta il tuo utente
"version_name": "123", // versione del build web
"version_build": "120", // versione del build nativo
"version_code": "120", // numero build del build nativo
"version_os": "16", // versione OS del dispositivo
"plugin_version": "400"// per far comportare la tua api diversamente con plugin diversi
"is_emulator": false,
"is_prod": false,
}

Puoi anche disabilitarlo completamente, con una stringa vuota. Tieni presente che le statistiche sono rese private-friendly e mi aiutano a capire come le persone usano il plugin, per risolvere problemi e migliorarlo

API dei canali

Da documentare