Passer à la navigation

Statistiques API

GitHub

À partir de la version 1.3.0, le système d'actualisation est capable d'envoyer des statistiques !

Par défaut, toutes les statistiques sont envoyées à notre serveur, afin de comprendre l'utilisation et de la recherche.

Si vous souhaitez envoyer ces données à votre serveur au lieu de cela, modifiez la configuration ci-dessous :

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

Ce que votre serveur recevra est :

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 également le désactiver complètement, avec une chaîne vide. Gardez à l'esprit que les statistiques sont conçues pour être privées et m'aident à comprendre comment les gens utilisent le plugin, pour résoudre les problèmes et l'améliorer.

Lorsque votre point de terminaison de mise à jour a pas de nouvelle version, il doit répondre avec 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 quel chaîne que vous voulez (ce n'est que pour la journalisation/débogage). C'est le comportement attendu et il est toujours retourné avec HTTP 200Si votre point de terminaison de mise à jour renvoie au lieu une 200 réponse sans un urlla mise à jour du plugin le traitera comme une échec de téléchargement et enverra un download_fail statut.

Voici un exemple de code en JavaScript pour sauvegarder les statistiques 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' }
}

Cette fin de pointe devrait retourner un JSON :

{ "status": "ok" }

Pour des descriptions détaillées de tous les codes d'action et de leurs significations, veuillez vous référer à la documentation de débogage :

Si vous utilisez Statistiques API planer le tableau de bord et les API opérations, connectez-l’avec En utilisant @capgo/capacitor-mises-à-jour pour la capacité native dans En utilisant @capgo/capacitor-mises-à-jour API Vue d'ensemble pour le détail d'implémentation dans API Vue d'ensemble Introduction pour le détail d'implémentation dans Introduction API Clés pour le détail d'implémentation dans API Clés, et Appareils pour le détail d'implémentation dans Appareils.