Statistiche API
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Statistiche API
Sezione intitolata “Statistiche API”Dalla versione 1.3.0, il sistema di aggiornamento può inviare statistiche!
Di default, tutte le statistiche vengono inviate al nostro server per analisi e ricerca sull'utilizzo.
Se invece vuoi inviare questi dati al tuo server, modifica la configurazione qui sotto:
// capacitor.config.json{ "appId": "**.***.**", "appName": "Name", "plugins": { "CapacitorUpdater": { "statsUrl": "YOUR_URL" } }}Struttura dei dati
Sezione intitolata “Struttura dei dati”Ecco cosa riceverà il tuo server:
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,}Puoi anche disabilitarlo del tutto con una stringa vuota. Tieni presente che le statistiche rispettano la privacy e mi aiutano a capire come viene usato il plugin, così da risolvere problemi e migliorarlo.
Comportamento atteso per “nessun aggiornamento”
Sezione intitolata “Comportamento atteso per “nessun aggiornamento””Quando il tuo endpoint di aggiornamento non ha una nuova versione, dovrebbe rispondere con un payload di errore come:
{ "error": "no_new_version_available", "message": "No new version available" }Il error code deve essere esattamente no_new_version_available. L' message può essere una stringa qualsiasi (serve solo per logging/debugging). Questo è il comportamento previsto e viene comunque restituito con HTTP 200. Se invece il tuo endpoint di update restituisce una 200 response senza un url, il plugin la considererà come un errore di download e invierà una download_fail stat.
Esempio di implementazione
Sezione intitolata “Esempio di implementazione”Ecco un esempio di code in JavaScript per salvare le stat del 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' }}Questo endpoint dovrebbe restituire un JSON:
{ "status": "ok" }Per la descrizione dettagliata di tutti i codici azione e del loro significato, consulta la documentazione di debugging:
- Action inviate dal dispositivo: Vedi la documentazione di debugging - Inviate dal dispositivo sezione
- Action inviate dal backend: Vedi la documentazione di debugging - Inviato dal backend sezione
Continua da Statistics API
Sezione intitolata “Continua da Statistics API”Se stai usando Statistiche API per pianificare le operazioni della dashboard e di API, collegalo a Usando @capgo/capacitor-updater per la funzionalità nativa in Usando @capgo/capacitor-updater, Panoramica API per i dettagli di implementazione in Panoramica di API, Introduzione per i dettagli di implementazione in Introduzione, Chiavi API per i dettagli di implementazione in Chiavi API, e Dispositivi per i dettagli di implementazione in Dispositivi.