Saltar al contenido

Estadísticas API

A partir de la versión 1.3.0, el sistema de actualización puede enviar estadísticas.

Por defecto, todas las estadísticas se envían a nuestro servidor, para entender el uso y realizar investigaciones.

Si desea enviar este dato a su servidor en lugar de eso, cambie la configuración a continuación:

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

Copiar a portapapeles

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

Si desea enviar este dato a su servidor en lugar de eso, cambie la configuración a continuación:__CAPGO_KEEP_0__

Cuando su punto de conexión de actualización tenga ninguna nueva versión, debería responder con un payload de error como:

{ "error": "no_new_version_available", "message": "No new version available" }

El error code debe ser exactamente no_new_version_available. El message puede ser cualquier cadena que desee (solo se utiliza para registro/debugeo). Este es el comportamiento esperado y todavía se devuelve con HTTP 200. Si su punto de conexión de actualización devuelve en su lugar una 200 respuesta sin un url, el plugin tratará como un fallo de descarga y enviará un download_fail stat.

Aquí hay un ejemplo de code en JavaScript para guardar los estadísticas del plugin:

interface AppInfos {
version_name: string
action: 'ping' |
'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' |
'download_manifest_start' |
'download_manifest_complete' |
'download_zip_start' |
'download_zip_complete' |
'download_manifest_file_fail' |
'download_manifest_checksum_fail' |
'download_manifest_brotli_fail' |
'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' |
'cannotGetBundle' |
'checksum_fail' |
'NoChannelOrOverride' |
'setChannel' |
'getChannel' |
'rateLimited' |
'disableAutoUpdate' |
'InvalidIp' |
'keyMismatch' |
'blocked_by_server_url'
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' }
}

Esta API debería devolver un JSON:

{ "status": "ok" }

Para obtener descripciones detalladas de todos los códigos de acción y sus significados, consulte la documentación de depuración: