Statistiken API
Ein Setup-Prompt mit den Installationsanweisungen und der vollständigen Markdown-Guide für diesen Plugin kopieren.
Statistiken API
Abschnitt mit dem Titel „Statistiken API“Ab Version 1.3.0 kann das Update-System Statistiken senden!
Alle Statistiken werden standardmäßig an unseren Server gesendet, um den Einsatz und die Forschung zu verstehen.
Wenn Sie diese Daten an Ihren Server senden möchten, ändern Sie die Konfiguration unten:
// capacitor.config.json{ "appId": "**.***.**", "appName": "Name", "plugins": { "CapacitorUpdater": { "statsUrl": "YOUR_URL" } }}Datenstruktur
Abschnitt mit dem Titel „Datenstruktur“Was Ihr Server erhält, ist:
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,}Sie können es auch vollständig deaktivieren, indem Sie eine leere Zeichenkette verwenden. Beachten Sie, dass Statistiken anonymisiert sind und mir helfen, zu verstehen, wie Menschen das Plugin verwenden, um Probleme zu lösen und es zu verbessern.
Erwartetes Verhalten bei 'keine Aktualisierung'
Abschnitt mit dem Titel 'Erwartetes Verhalten bei 'keine Aktualisierung''Wenn Ihr Aktualisierungs-Endpunkt keine neue Versionhat, sollte er mit einem Fehler-Payload wie folgend antworten:
{ "error": "no_new_version_available", "message": "No new version available" }Die error code muss genau no_new_version_available. Die message kann jeder beliebige String sein (es wird nur für die Protokollierung/Debugging verwendet). Dies ist die erwartete Verhaltensweise und wird immer noch mit HTTP 200wenn Ihr Update-Endpunkt stattdessen eine 200 Antwort ohne einen url, wird der Plugin als Downloadfehler behandelt und wird ein download_fail stat.
Implementierungsbeispiel
Abschnitt mit dem Titel “Implementierungsbeispiel”Hier ist ein Beispiel für code in JavaScript, um die Statistiken des Plugins zu speichern:
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' }}Diese Endpunkt sollte eine JSON zurückgeben:
{ "status": "ok" }Für detaillierte Beschreibungen aller Aktionen und deren Bedeutung, zögern Sie bitte die Debug-Dokumentation auf:
- Aktionen, die vom Gerät gesendet wurdenSiehe die Debug-Dokumentation - Gesendet von der App Abschnitt
- Aktionen, die vom Backend gesendet wurdenSiehe die Fehlersuche Dokumentation - Von der Backend-Seite gesendet Abschnitt