Passer au contenu

Pengenalan - Pembaruan Otomatis

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

Avant de commencer

Si vous utilisez ce travail pour votre propre compte, je ne peux que vous suggérer de soutenir mon travail via ceci

J’ai fait un grand pari en rendant open source tout le précieux code que j’ai construit ici

J’aurais pu le garder pour moi et fixer un prix élevé

De plus, je veux me concentrer sur les outils Capgo et en faire une entreprise ouverte et transparente

De même, je pense que cela rendrait notre monde meilleur en s’ouvrant plutôt qu’en se battant et en se cachant

Mais pour que cela soit possible, nous devons tous faire notre part, y compris vous 🥹

Si les offres de Capgo ne vous conviennent pas, fixez votre prix et soutenez un créateur indépendant ICI selon vos conditions

Installation rapide

npm install @capgo/capacitor-updater
npx cap sync

Configuration

Vous devez configurer le plugin pour utiliser votre URL comme ceci :

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

🚧 Sur Android, les requêtes HTTP ne sont pas autorisées, pour les tests permettez-les

API de mise à jour

Le plugin fera un appel POST à 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://path_to_the_zip_file_of_the_codecom"
}

En mise à jour automatique, le serveur doit faire le travail de comparaison des versions et renvoyer la bonne, si la clé URL est présente, le plugin démarre 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 :

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

Chiffrement de bout en bout

À partir de la version 4150, le plugin permet d’envoyer des mises à jour chiffrées

Vous pouvez utiliser cette fonctionnalité en créant une clé privée npx @capgo/cli key create

Ensuite, chiffrez votre fichier zip avec npx @capgo/cli encrypt [path/to/zip]

La commande vous affichera une ivSessionKey qui doit être envoyée avec votre payload de mise à jour dans la clé session_key
Ensuite, votre application pourra utiliser la clé privée pour déchiffrer la session_key et utiliser la session_key déchiffrée pour déchiffrer la mise à jour

En savoir plus ici :

API de statistiques

À partir de la version 130, le système de mise à jour envoie des statistiques !

Par défaut, toutes les statistiques sont envoyées à notre serveur, pour comprendre l’utilisation

💡 Aucune donnée privée n’est envoyée pour les statistiques, uniquement UUID aléatoire, version de mise à jour, version de l’application native, plateforme, action et ID d’application

Si vous voulez envoyer les données à votre serveur à la place, modifiez la configuration ci-dessous :

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

Ce que votre serveur recevra :

interface AppInfosStats {
"action": "set", // peut être set, delete, set_fail, reset, revert
// Ensuite ce sont les mêmes infos que la mise à jour
"app_id": "*******", // identifiant de l'application dans le store
"device_id": "*******", // id unique par installation d'application
"platform": "ios", // ou android
"custom_id": "user_1", // représente votre utilisateur
"version_name": "123", // version de la build web
"version_build": "120", // version de la build native
"version_code": "120", // numéro de build de la build native
"version_os": "16", // version OS de l'appareil
"plugin_version": "400"// pour faire que votre api se comporte différemment avec différents plugins
"is_emulator": false,
"is_prod": false,
}

Vous pouvez aussi totalement le désactiver, avec une chaîne vide. Gardez à l’esprit que les statistiques sont faites de manière respectueuse de la vie privée et m’aident à comprendre comment les gens utilisent le plugin, pour résoudre les problèmes et l’améliorer

API de canal

À documenter