Saltare al contenuto

Statistiche API

GitHub

Partendo dalla versione 1.3.0 il sistema di aggiornamento è in grado di inviare statistiche!

Di default, tutte le statistiche vengono inviate al nostro server, per comprendere l'utilizzo e la ricerca.

Se desiderate inviare questi dati al vostro server, modificate la configurazione qui sotto:

// capacitor.config.json
{
"appId": "**.***.**",
"appName": "Name",
"plugins": {
"CapacitorUpdater": {
"statsUrl": "YOUR_URL"
}
}
}

Quello che il vostro server riceverà è:

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

Potete anche disabilitarlo completamente, con una stringa vuota. Tenete presente che le statistiche sono trattate in modo riservato e mi aiutano a comprendere come le persone utilizzano il plugin, a risolvere problemi e migliorarlo.

Aspettato comportamento “nessun aggiornamento”

Sezione intitolata “Aspettato comportamento “nessun aggiornamento””

Quando il tuo endpoint di aggiornamento ha nessuna 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. Il message può essere qualsiasi stringa che desideri (è utilizzato solo per la registrazione/ debug). Questo è il comportamento previsto e viene ancora restituito con lo stato HTTP 200Se il tuo endpoint di aggiornamento restituisce invece una 200 risposta senza un urlEcco, il plugin lo tratterà come un fallimento di download e invierà un download_fail stat.

Ecco un esempio di code in JavaScript per salvare le statistiche 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' }
}

Questa endpoint dovrebbe restituire un JSON:

{ "status": "ok" }

Per descrizioni dettagliate di tutti i codici di azione e i loro significati, si prega di consultare la documentazione di debug:

Se stai utilizzando Statistiche API per pianificare il dashboard e le API operazioni, connettilo con Utilizzare @capgo/capacitor-aggiornatore per la capacità nativa in Utilizzare @capgo/capacitor-aggiornatore Panoramica di API per il dettaglio di implementazione in Panoramica di API Introduzione per il dettaglio di implementazione in Introduzione Chiavi di API per il dettaglio di implementazione in Chiavi di API, e Dispositivi per il dettaglio di implementazione in Dispositivi.