Statistiken API
Kopiere einen Setup-Prompt mit den Installationsschritten und dem vollständigen Markdown-Guide für dieses Plugin.
Statistiken API
Abschnitt mit dem Titel „API Statistiken“Ab Version 1.3.0 kann das Update-System Statistiken senden!
Standardmäßig werden alle Statistiken zur Analyse der Nutzung an unseren Server gesendet.
Wenn du diese Daten stattdessen an deinen Server senden möchtest, ändere die Config unten:
// capacitor.config.json{ "appId": "**.***.**", "appName": "Name", "plugins": { "CapacitorUpdater": { "statsUrl": "YOUR_URL" } }}Datenstruktur
Abschnitt mit dem Titel „Datenstruktur“Dein Server empfängt Folgendes:
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,}Du kannst die Übertragung auch komplett deaktivieren, mit einem leeren String. Beachte: Die Statistiken sind datenschutzfreundlich und helfen mir zu verstehen, wie das Plugin genutzt wird, Probleme zu lösen und es zu verbessern.
Erwartetes Verhalten bei „kein Update“
Abschnitt mit dem Titel „Erwartetes Verhalten bei ‚kein Update‘“Wenn dein Update-Endpoint keine neue Versionhat, sollte er mit einem Error-Payload wie diesem antworten:
{ "error": "no_new_version_available", "message": "No new version available" }Der error code muss exakt sein: no_new_version_available. Die message kann eine beliebige Zeichenfolge sein (dient nur dem Logging/Debugging). Dies entspricht dem erwarteten Verhalten und wird weiterhin via HTTP zurückgegeben 200zurückgegeben. Wenn dein Update-Endpoint stattdessen eine 200 Response ohne urlliefert, wertet das Plugin dies als Download-Fehler und sendet eine download_fail Statistik.
Implementierungsbeispiel
Abschnitt mit dem Titel „Implementierungsbeispiel“Hier ist ein JavaScript-Beispiel für code, um die Plugin-Stats zu speichern:
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' }}Dieser Endpoint sollte folgendes JSON zurückgeben:
{ "status": "ok" }Aktionen
Abschnitt „Actions“Detaillierte Beschreibungen aller Action-Codes und deren Bedeutung findest du in der Debugging-Dokumentation:
- Vom Device gesendete Actions: Siehe die Debugging-Dokumentation – Vom Device gesendet Abschnitt
- Vom Backend gesendete Actions: Siehe die Debugging-Dokumentation – Vom Backend gesendet Abschnitt
Weiter mit Statistiken API
Abschnitt mit dem Titel „Weiter mit den Statistiken API“Wenn du es nutzt Statistiken API um Dashboard- und API-Operationen zu planen, verbinde es mit Verwendung von @capgo/capacitor-updater für die native Funktion in der Verwendung von @capgo/capacitor-updater, API Übersicht für Details zur Implementierung im API Overview, Einführung für die Implementierungsdetails in der Einleitung, API Schlüssel für das Implementierungsdetail in API Keys und Geräte für das Implementierungsdetail in Devices.