Statistiques API
Copiez un prompt de configuration incluant les étapes d'installation et le guide markdown complet pour ce plugin.
Statistiques API
Section intitulée « Statistiques API »À partir de la version 1.3.0, le système de live update peut envoyer des statistiques !
By default, all stats are sent to our server, to understand usage and research.
Si vous souhaitez envoyer ces données à votre propre serveur, modifiez la configuration ci-dessous :
// capacitor.config.json{ "appId": "**.***.**", "appName": "Name", "plugins": { "CapacitorUpdater": { "statsUrl": "YOUR_URL" } }}Structure des données
Section intitulée « Structure des données »Voici ce que votre serveur recevra :
interface AppInfosStats { "action": "set", // can be set, delete, set_fail, reset, revert // Then it's the same info as update "app_id": "**.***.**", // app identifier in the store "device_id": "*******", // unique id per app install "platform": "ios", // or android, or electron "custom_id": "user_1", // represent your user "version_name": "1.2.3", // version of the web build "version_build": "1.2.0", // version of the native build "version_code": "120", // build number of the native build "version_os": "16", // OS version of the device "plugin_version": "4.0.0"// to make your api behave differently with different plugins "is_emulator": false, "is_prod": false,}Vous pouvez aussi le désactiver complètement avec une chaîne vide. Gardez en tête que les statistiques respectent la vie privée et m'aident à comprendre comment le plugin est utilisé, à résoudre les problèmes et à l'améliorer.
Comportement attendu sans mise à jour
Section titled “Expected “no update” behavior”Lorsque votre endpoint de mise à jour n'a aucune nouvelle version, il doit renvoyer un payload d'erreur comme :
{ "error": "no_new_version_available", "message": "No new version available" }Le error code doit être exactement no_new_version_available. Le message peut être n’importe quelle chaîne de caractères (elle sert uniquement aux logs et au débogage). C’est le comportement attendu et elle est toujours renvoyée avec HTTP 200. Si votre endpoint de mise à jour renvoie plutôt un 200 response without a url, le plugin le considérera comme un échec de téléchargement et enverra un download_fail stat.
Exemple d'implémentation
Section intitulée « Exemple d’implémentation »Voici un exemple de code en JavaScript pour enregistrer les stats du plugin :
interface AppInfos { version_name: string action: 'delete' | 'reset' | 'set' | 'get' | 'set_fail' | 'update_fail' | 'download_fail' | 'windows_path_fail' | 'canonical_path_fail' | 'directory_path_fail' | 'unzip_fail' | 'low_mem_fail' | 'download_10' | 'download_20' | 'download_30' | 'download_40' | 'download_50' | 'download_60' | 'download_70' | 'download_80' | 'download_90' | 'download_complete' | 'decrypt_fail' | 'app_moved_to_foreground' | 'app_moved_to_background' | 'uninstall' | 'needPlanUpgrade' | 'missingBundle' | 'noNew' | 'disablePlatformIos' | 'disablePlatformAndroid' | 'disableAutoUpdateToMajor' | 'cannotUpdateViaPrivateChannel' | 'disableAutoUpdateToMinor' | 'disableAutoUpdateToPatch' | 'channelMisconfigured' | 'disableAutoUpdateMetadata' | 'disableAutoUpdateUnderNative' | 'disableDevBuild' | 'disableEmulator' | 'disablePlatformElectron' | 'disableProdBuild' | 'disableDevice' | 'customIdBlocked' | 'cannotGetBundle' | 'checksum_fail' | 'checksum_required' | 'NoChannelOrOverride' | 'setChannel' | 'getChannel' | 'rateLimited' | 'disableAutoUpdate' | 'keyMismatch' | 'ping' | 'InvalidIp' | 'blocked_by_server_url' | 'download_manifest_start' | 'download_manifest_complete' | 'download_zip_start' | 'download_zip_complete' | 'download_manifest_file_fail' | 'download_manifest_checksum_fail' | 'download_manifest_brotli_fail' | 'backend_refusal' | 'app_crash' | 'app_crash_native' | 'app_anr' | 'app_killed_low_memory' | 'app_killed_excessive_resource_usage' | 'app_initialization_failure' | 'app_memory_warning' | 'webview_javascript_error' | 'webview_unhandled_rejection' | 'webview_resource_error' | 'webview_security_policy_violation' | 'webview_unclean_restart' | 'webview_render_process_gone' | 'webview_content_process_terminated' | 'os_version_changed' | 'native_app_version_changed' | 'download_0' version_build: string version_code: string version_os: string plugin_version: string platform: string app_id: string device_id: string custom_id?: string is_prod?: boolean is_emulator?: boolean}
export const handler: Handler = async (event) => { const body = JSON.parse(event.body || '{}') as AppInfos const { platform, app_id, action, version_code, version_os, device_id, version_name, version_build, plugin_version, } = body console.log('update asked', platform, app_id, action, version_os, version_code, device_id, version_name, version_build, plugin_version) // Save it in your database return { status: 'ok' }}Cet endpoint doit renvoyer un JSON :
{ "status": "ok" }Pour des descriptions détaillées de tous les codes d’action et de leur signification, veuillez consulter la documentation de débogage :
- Actions envoyées depuis l’appareil: voir la documentation de débogage - Envoyées depuis l’appareil section
- Actions envoyées depuis le backend: voir la documentation de débogage - Envoyé depuis le backend section
Continuer depuis les statistiques API
Section intitulée « Continuer depuis les statistiques API »Si vous utilisez Statistiques API pour planifier les opérations du dashboard et de API, connectez-l’avec Utiliser @capgo/capacitor-updater pour la capacité native dans « Utiliser @capgo/capacitor-updater », Aperçu de API pour les détails d'implémentation dans « Vue d'ensemble de API », Introduction pour les détails d'implémentation dans l'introduction, Clés API pour les détails d'implémentation dans « Clés API », et Appareils pour les détails d'implémentation dans Devices.