Estadísticas API
Copiar un comando de configuración con los pasos de instalación y la guía markdown completa para este plugin.
Sección titulada “Estadísticas API”
Section titled “Statistics API”Desde la versión 1.3.0, el sistema de actualizaciones 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 estos datos a su servidor en su lugar, cambie la configuración a continuación:
// capacitor.config.json{ "appId": "**.***.**", "appName": "Name", "plugins": { "CapacitorUpdater": { "statsUrl": "YOUR_URL" } }}Estructura de datos
Título de la sección ‘Estructura de datos’Lo que su servidor recibirá es:
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,}También puede deshabilitarlo por completo, con una cadena vacía. Ten en cuenta que las estadísticas se hacen privadas y amigables, y me ayudan a entender cómo las personas utilizan el complemento, para resolver problemas y mejorar su funcionalidad.
Comportamiento esperado “sin actualización”
Sección titulada “Comportamiento esperado “sin actualización””Cuando su punto de actualización tiene ninguna nueva versión, debe responder con un paquete de errores 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 aún se devuelve con HTTP 200Si su punto de actualización devuelve en cambio una 200 respuesta sin un urlla aplicación tratará a esto como un error de descarga y enviará un download_fail stat.
Ejemplo de implementación
Sección titulada “Ejemplo de implementación”Aquí hay un ejemplo de code en JavaScript para guardar las estadísticas de la aplicación:
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' }}Esta API debería devolver un JSON:
{ "status": "ok" }Acciones
Sección titulada “Acciones”Para obtener descripciones detalladas de todos los códigos de acción y sus significados, consulte la documentación de depuración:
- Acciones enviadas desde el dispositivo: Vea la documentación de depuración - Enviado desde el dispositivo sección
- Acciones enviadas desde el backend: Vea la documentación de depuración - Enviado desde el backend sección
Siga adelante desde estadísticas API
Título de la sección “Siga adelante desde estadísticas API”Si está utilizando Estadísticas API para planificar la consola de dashboard y API operaciones, conecte con Usando @capgo/capacitor-actualizador para la capacidad nativa en Usando @capgo/capacitor-actualizador, API Resumen para el detalle de implementación en API Resumen, Introducción para el detalle de implementación en Introducción, API Claves para el detalle de implementación en API Claves, y Dispositivos para el detalle de implementación en Dispositivos.