Passer au contenu

Auto Update

Cette documentation expliquera comment exécuter votre serveur de mise à jour automatique

Servir votre bundle

Assurez-vous que votre bundle est servi via HTTPS, et que le serveur dispose des en-têtes CORS appropriés pour permettre à l’application de télécharger la mise à jour par exemple https://myservercom/app/updates/updatesjson

Si vous n’êtes pas familier avec la distribution d’un bundle, nous vous recommandons d’essayer Capgo Cloud ou de voir un exemple ici :

Configuration

Ajoutez une updateUrl à votre capacitorconfigjson

{
"plugins": {
"CapacitorUpdater": {
"updateUrl": "https://myservercom/app/updates/updatesjson",
}
}
}

API de mise à jour

Le plugin effectuera un appel POST vers votre API chaque fois que l’application est ouverte, avec ce corps :

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,
}

Le serveur API doit répondre, en JSON, au plugin capacitor-updater avec ces données si une mise à jour est nécessaire :

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

En mode de mise à jour automatique, le serveur doit comparer les versions et renvoyer la bonne. Si la clé URL est présente, le plugin commence le processus de téléchargement

Si vous ajoutez les clés “message” et “error”, la version ne sera pas définie, et le message sera affiché dans les logs à la place

La clé version doit être au format semver

Le zip doit avoir indexhtml comme fichier à la racine, ou un seul dossier à la racine avec indexhtml à l’intérieur

Vous pouvez utiliser la commande du CLI pour zipper votre bundle :

Créer un bundle avec vos fichiers à servir depuis votre serveur
npx @capgo/cli bundle zip --path [/path/to/my/bundle]