Zum Inhalt springen

Statistiken API

Ab Version 1.3.0 kann das Update-System Statistiken senden!

Alle Statistiken werden standardmäßig an unseren Server gesendet, um die Nutzung zu verstehen und zu erforschen.

Wenn Sie stattdessen diese Daten an Ihren Server senden möchten, ändern Sie die Konfiguration unten:

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

Zum Clipboard kopieren

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 einen leeren String verwenden. Beachten Sie, dass Statistiken anonymisiert werden, um mir zu helfen, wie Menschen das Plugin verwenden, um Probleme zu lösen und es zu verbessern.

Wenn Ihr Aktualisierungs-Endpunkt hat keine neue Version, sollte er mit einem Fehler-Payload wie:

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

In die Zwischenablage kopieren error code must be exactly no_new_version_available__CAPGO_KEEP_0__ muss genau message . Der 200kann jeder beliebige String sein, den Sie wollen (er wird nur zum Logging/Debugging verwendet). Dies ist das erwartete Verhalten und es wird auch noch mit HTTP 200 Wenn Ihr Aktualisierungs-Endpunkt stattdessen eine url, die Plugin wird es als Downloadfehler behandeln und senden Sie ein download_fail stat.

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 ihrer Bedeutungen, zitieren Sie bitte die Debug-Dokumentation: