コンテンツにスキップ

statistic API

GitHub

バージョン 1.3.0 から、更新システムは統計を送信できるようになりました。

デフォルトでは、すべての統計は私たちのサーバーに送信され、使用状況を理解し、研究するために使用されます。

統計を送信するデータをあなたのサーバーに送信したい場合は、以下の設定を変更してください。

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

データ構造

データ構造

あなたのサーバーに送信されるのは以下のようになります。

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

送信を完全に無効にすることもできます。空の文字列を指定してください。統計はプライベートに扱われ、問題を解決し、プラグインを改善するために、ユーザーがプラグインをどのように使用しているかを理解するために使用されます。

予期される「アップデートなし」の動作

セクション「予期される「アップデートなし」の動作」

アップデートエンドポイントが 新しいバージョンがない場合, エラーのペイロードのようなものを返すようにしてください

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

The error code は正確に no_new_version_available。 The message は任意の文字列になります (ログ/デバッグ用にしか使用されないため)。 これは予期される動作であり、HTTP 200ステータスとともに返されます。 アップデートエンドポイントが 200 レスポンスを返すのではなく、 url、プラグインはこれをダウンロード失敗とみなします。 download_fail stat。

ここでは、JavaScriptでプラグインの統計を保存するcodeの例を示します。

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

このエンドポイントは、JSON形式で次のデータを返す必要があります。

{ "status": "ok" }

すべてのアクションコードとその意味の詳細な説明については、デバッグドキュメントを参照してください。

Statistics API を使用している場合

タイトル "Statistics API" のセクション

Statistics __CAPGO_KEEP_0__ を使用している場合 Statistics API ダッシュボードとAPIの作業を計画し、APIに接続する Using @capgo/capacitor-updater Using @capgo/capacitor-updater APIの概要 for the implementation detail in API Overview 概要 for the implementation detail in Introduction APIのキー for the implementation detail in API Keys, and デバイス for the implementation detail in Devices.