すべてのプロダクト
Search
ドキュメントセンター

Quick Tracking:トラッキング API

最終更新日:Jun 08, 2025

1. トラッキングソリューションを表示するにはどうすればよいですか。

埋点する前に、どこでトラッキングするか、何をトラッキングするかを決定する必要があります。つまり、明確な埋点要件を整理する必要があります。 Quick Tracking プラットフォームでは、明示的なトラッキング要件はトラッキングソリューションと呼ばれ、トラッキングソリューション用に仕様テンプレートが設計されています。

3f

トラッキングプランでは、必要なトラッキングコンテンツは次のとおりです。

1. イベント件名: デバイス ID および アカウント ID

  • デバイス ID: Windows デバイスのデフォルトのデバイス ID は、アプリケーションレベルで一意のデバイス ID です。デバイス ID は、 Quick Tracking SDK によって自動的に生成されるか、setCustomDeviceId 操作を呼び出すことができます。

  • アカウント ID: クライアントユーザーがシステムにログインするためのアカウント ID。ユーザーが異なるデバイスからログインすると、デバイス ID は変更されますが、アカウント ID は変更されません。たとえば、ユーザーがコンピューターとパッドを使用して個別にログインします。

2. ユーザー属性: アカウント ID の属性。たとえば、アカウント ID が「testdemo@111」のユーザーの「誕生日」は「1999-02-13」、「メンバーシップレベル」は「プラチナ」です。「誕生日」と「メンバーシップ」の評価はユーザー属性です。

3. グローバル属性: グローバル属性が一度設定された後、各イベントで伝送される属性

4. ページ閲覧イベント: ページが読み込まれたときに報告されるイベント。トラッキングプランでは、ページコードがイベントコードと同じイベントは青色でマークされます。

5. クリック、露出、カスタムイベント: クライアントユーザーがクライアントと対話したときに報告されるイベント。

2. トラッキングに関する注意事項

  • 入力パラメーターは、単一引用符やデータ型などの特殊な文字列をサポートしていません。サポートしている場合、イベントがデータベースから削除されず、データが失われる可能性があります。

  • 中国語パラメーターを使用するには、ソースコードファイルのエンコーディングが有効な Unicode(UTF-8 符号なし)エンコーディングである必要があります。

  • ログ切り替え操作を除き、操作を有効にする前に initQTPC 操作を呼び出す必要があります。

  • Windows 10.X では、GetVersionEx を使用してシステムバージョンを不正確に取得できます。この場合は、マニフェストファイルをプロジェクトフォルダーに追加し、マニフェストファイルをプロジェクトのプロパティ> インベントリツール> 入力と出力> 追加のインベントリファイルに追加する必要があります。次のサンプルファイルを使用します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
        <asmv3:application>
          <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
            <dpiAware>false</dpiAware>
          </asmv3:windowsSettings>
        </asmv3:application>
        <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
            <application>
                <!-- Windows 10 and Windows 11 --> 
  • 入力パラメーターサイズの制限:

// カスタム属性とグローバル属性のキーと値が上限を超えると、設定を完了できません。
const size_t kStringPropertyValueMaxLength=4096; // カスタムプロパティとグローバルプロパティ値の上限。
const size_t kStringPropertyKeyMaxLength=1024; // カスタムプロパティとグローバルプロパティキーの最大値。
const size_t kStringArrayValueMaxSize=100; // カスタム属性文字列配列の長さの上限。上限を超えると、文字列配列は切り捨てられます。
const size_t kStringMapValueMaxSize=50; // グローバル属性セットの上限。上限を超えると、それ以上のデータを挿入できません。
const size_t kStringEventCodeMaxLength=500; // イベントコードの最大長

3. デバイス ID、アカウント ID、およびユーザー属性の設定

3.1 デバイス ID

SDK はカスタムデバイス ID をサポートしています。カスタムデバイス ID を使用する場合は、setCustomDeviceId インターフェースを有効な値に設定する必要があります。

インターフェース関数:

// カスタムデバイス ID を指定します。
QTFORPC_API QT_VOID setCustomDeviceId(QT_CSTR deviceId);

パラメーター:

フィールド

機能

詳細

必須

deviceId

const char *

カスタムデバイスの ID。値は空でない文字列でなければなりません。

はい

string customDeviceId = "testId";
qtInterface->setCustomDeviceId(customDeviceId.c_str());

3.2 アカウント ID

3.2.1 ユーザーログイン

デバイスに基づくユーザー統計の Quick Tracking SDK では、標準として、独自のアカウントをカウントする必要がある場合は、次の方法を使用してください。

インターフェース関数:

// アプリケーションにログインします。
QTFORPC_API QT_VOID onProfileSignIn(QT_CSTR userID, QT_CSTR nick);

パラメーター:

フィールド

機能

詳細

必須

userID

const char *

ユーザーアカウント ID。空の文字列ではありません。

はい

nick

const char *

ユーザーのニックネーム。

いいえ、空の文字列を渡すことはできません

qtInterface->onProfileSignIn("userId", "userNick");

3.2.2 ユーザーログアウト

ユーザーアカウントをバインドする必要がなくなった場合は、SDK が提供するユーザーログアウトメソッドを呼び出すことができます。メソッドを呼び出すと、SDK はユーザーアカウント関連のコンテンツを送信しなくなります。

インターフェース関数:

// ログアウトします。
QTFORPC_API QT_VOID onProfileSignOff();

qtInterface->onProfileSignOff();

3.3 ユーザー属性のアップロード

イベントエンコーディングを使用して、$$_user_profile カスタムイベントアップロードを行います。イベントによって伝送されるイベント属性は、ユーザー属性としてユーザーテーブルに保存されます。

注: データの精度を確保するために、uploadUserProfile は onPageStart 後、onPageEnd 前に呼び出す必要があります。

インターフェース関数:

// ユーザー属性をアップロードします。
QTFORPC_API QT_VOID uploadUserProfile(QT_VSTR pageObj, QT_MAP customProperties);

パラメーター:

フィールド

機能

詳細

必須

pageObj

void *

WNDCLASS のコンテナーを使用することをお勧めします。

はい

customProperties

const char *

ビジネスパラメーター。パラメーターには JSON リテラルテンプレート文字列を指定する必要があります。

はい

WNDCLASS *wndClass = new WNDCLASS();
qtInterface->onPageStart(wndClass, "PageName");
std::string cusp = R"({
    "age": 18,
    "level": "King",
    "name": "coolboy",
})";
qtInterface->uploadUserProfile(wndClass, cusp.c_str());
qtInterface->onPageEnd(wndClass);

4. グローバル属性

4.1 グローバル属性の登録

インターフェース関数:

// グローバルプロパティを設定します。
QTFORPC_API QT_VOID registerGlobalProperty(QT_CSTR key, QT_CSTR value);

パラメーター:

フィールド

機能

詳細

必須

キー

const char *

グローバル プロパティ キーを設定します

はい

const char *

グローバル プロパティ値を設定します

はい

qtInterface->registerGlobalProperty("key", "value");

注: 既存のグローバル属性のキーが既存のグローバル属性のキーと同じである場合、既存の値が更新されます。既存のグローバル属性のキーが既存のグローバル属性のキーと異なる場合は、新しいグローバル属性が挿入されます。

4.2 グローバル属性を削除する

API 関数:

// キーに基づいてグローバル属性を削除します。
QTFORPC_API QT_VOID unregisterGlobalProperty(QT_CSTR key);

パラメータ:

フィールド

機能

詳細

必須

キー

const char *

削除するグローバル属性キー

はい

qtInterface->unregisterGlobalProperty("key");

4.3 キーに基づいて単一のグローバル属性を取得する

API 関数:

// キーに基づいてグローバルプロパティを取得します。
QTFORPC_API QT_VOID getGlobalProperty(QT_CSTR key, QT_STR value, QT_INT size);

パラメータ:

フィールド

機能

詳細

必須

key

const char *

取得するグローバルプロパティのキー

はい

value

char *

取得するグローバルプロパティ値

はい

size

int

グローバル属性値の長さ

はい

// サイズは必要に応じて設定されます。
char value[64] = { 0 };
qtInterface->getGlobalProperty("key", value, 64);
string myValue = value;

4.4 すべてのグローバルプロパティを取得する

API 関数:

// グローバル属性をすべて取得します。
QTFORPC_API QT_VOID getGlobalProperties(QT_STR properties, QT_INT size);

パラメータ:

フィールド

機能

詳細

必須

properties

char *

取得するグローバル プロパティの追跡

はい

size

int

グローバル属性値の長さ

はい

// サイズは必要に応じて設定されます。
char properties[128] = { 0 };
qtInterface->getGlobalProperties(properties);
std::map<string, string> myProperties = QT::Helper::QT_DeserializePerson(properties, 128);
重要

注記: 取得したプロパティは、QT::Helper::QT_DeserializePerson インターフェイスを介して std::map に変換する必要があります。

5. ページ閲覧イベント

5.1 ページでの手動トラッキング

重要

注意

onPageStart は SDK によってページエントリ情報の記録に使用されます。 onPageStart はイベントをレポートしません。 PageView イベントは、onPageEnd が呼び出された場合にのみレポートされます。

onPageStart メソッドと onPageEnd メソッドはペアで使用してください。 pageObj の値は同じである必要があります。 onPageEnd メソッドが存在しない場合、または onPageStart で使用されている pageObj の値と一致しない場合、onPageStart によって記録された情報は有効になりません。これは、ページイベントトラッキングの精度に影響します。

インターフェース関数:

// ページの表示が開始されます。
QTFORPC_API QT_VOID onPageStart(QT_VSTR pageObj, QT_CSTR pageName);
// ページが非表示になり始めます。
QTFORPC_API QT_VOID onPageEnd(QT_VSTR pageObj);

パラメータ:詳細については、「WordPress REST API」をご参照ください。

フィールド

特徴

詳細

必須

pageObj

void *

コンテナオブジェクト WNDCLASS を使用することをお勧めします。同じページで、onPageEnd を呼び出すときは、onPageStart と同じ pageObj を渡す必要があります。

はい

pageName

const char *

ページイベントのイベントコード

はい

5.2 ページイベントのプロパティの設定

API 関数:

// ページイベントパラメータを設定します。
QTFORPC_API QT_VOID updatePageProperties(QT_VSTR pageObj, QT_MAP pageProperties);

パラメータ:

フィールド

機能

詳細

必須

pageObj

void *

コンテナオブジェクト WNDCLASS を使用することをお勧めします。同じページで updatePageProperties を呼び出すときは、onPageStart と同じ pageObj を渡す必要があります。

はい

pageProperties

const char *

ページパラメーター。ページイベントログのイベント属性に対応します。パラメーターには JSON リテラルテンプレート文字列を指定する必要があります。

はい

WNDCLASS *wndClass = new WNDCLASS();
// ページ開始時に qtInterface を呼び出す
qtInterface->onPageStart(wndClass, "PageName");
std::string cusp = R"({
    "param_str": "hello c++",
    "param_num": 1900,
    "param_bool": true,
    "param_list": ["hello", "world", "c++"]
})";
// ページのプロパティを更新する
qtInterface->updatePageProperties(wndClass, cusp.c_str());
// ページ終了時に qtInterface を呼び出す
qtInterface->onPageEnd(wndClass);

4.4 すべてのグローバルプロパティを取得する

現在のページ(コンテナ内の子ページ)の前のページ(ソースページはコンテナページ)をスキップします。

API 関数:

// マルチコンテナネストのコンテナをスキップします。
QTFORPC_API QT_VOID skipPage(QT_VSTR pageObj);

フィールド

機能

詳細

必須

pageObj

void *

コンテナオブジェクト WNDCLASS を使用することをお勧めします。同じページで skipPage を呼び出すときは、onPageStart と同じ pageObj を渡す必要があります。

はい

WNDCLASS *wndClass = new WNDCLASS();
qtInterface->onPageStart(wndClass, "firstPage");
std::string cusp = R"({
    "param_str": "hello c++",
    "param_num": 1900,
    "param_bool": true,
    "param_list": ["hello", "world", "c++"]
})";
qtInterface->updatePageProperties(wndClass, cusp.c_str());
qtInterface->onPageEnd(wndClass);

WNDCLASS *wndClass1 = new WNDCLASS();
qtInterface->onPageStart(wndClass1, "secondPage");
qtInterface->onPageEnd(wndClass1);

WNDCLASS *wndClass2 = new WNDCLASS();
// thirdPage の前のページ、つまり secondPage をスキップします。この場合、thirdPage の ref_page_name は firstPage です。 skipPage が呼び出されない場合、ref_page_name は secondPage です。
qtInterface->skipPage(wndClass2);
qtInterface->onPageStart(wndClass2, "thirdPage");
qtInterface->onPageEnd(wndClass2);

6. イベントトラッキング

カスタムイベントを使用して、ユーザーの行動を追跡し、行動の具体的な詳細を記録できます。

重要

注記: trackEvent または trackEventWithPageName を使用するには、データの正確性を確保するために、呼び出しが onPageStart 後かつ onPageEnd 前に行われるようにしてください。

インターフェース関数:

// トラッキングイベント。
QTFORPC_API QT_VOID trackEvent(QT_VSTR pageObj, QT_CSTR id, QT_MAP customProperties);
// トラッキングイベントには、ページ名が含まれます。
QTFORPC_API QT_VOID trackEventWithPageName(QT_VSTR pageObj, QT_CSTR id, QT_MAP customProperties, QT_CSTR pageName);

パラメータ:

フィールド

機能

詳細

必須

pageObj

void *

コンテナオブジェクト WNDCLASS を使用することをお勧めします。同じページで trackEvent または trackEventWithPageName を呼び出す場合は、onPageStart と同じ pageObj を渡す必要があります。

はい

id

const char *

イベントエンコーディング。"$$_" で始まるパラメータを id の空でない文字列として渡すことはできません。

はい

customProperties

const char *

イベント属性。パラメータには JSON リテラルテンプレート文字列を指定する必要があります。

いいえ

pageName

const char *

ページエンコーディング

いいえ

WNDCLASS *wndClass = new WNDCLASS();
// ページ開始を通知
qtInterface->onPageStart(wndClass, "PageName");
std::string cusp = R"({
    "param_str": "hello c++",
    "param_num": 1900,
    "param_bool": true,
    "param_list": ["hello", "world", "c++"]
})";
// ページ名付きのイベントを追跡
qtInterface->trackEventWithPageName(wndClass, "test_event", cusp.c_str(), "PageName");
// ページ終了を通知
qtInterface->onPageEnd(wndClass);

7. アプリケーションの起動と終了イベントを手動でトラックする

重要

注記: enterForeground/enterForegroundWithPageName または enterBackground/enterBackgroundWithPageName を使用するには、データの精度を確保するために、呼び出す前に onPageStart および onPageEnd が呼び出されている必要があります。

API 関数:

// フォアグラウンドに入ります。
QTFORPC_API QT_VOID enterForeground(QT_VSTR pageObj, QT_MAP customProperties);
// PageName を使用してフォアグラウンドに入ります。
QTFORPC_API QT_VOID enterForegroundWithPageName(QT_VSTR pageObj, QT_MAP customProperties, QT_CSTR pageName);
// バックグラウンドに入ります。
QTFORPC_API QT_VOID enterBackground(QT_VSTR pageObj, QT_MAP customProperties);
// PageName を使用してバックグラウンドに入ります。
QTFORPC_API QT_VOID enterBackgroundWithPageName(QT_VSTR pageObj, QT_MAP customProperties, QT_CSTR pageName);

パラメーター:

フィールド

機能

詳細な説明

必須

pageObj

void *

コンテナオブジェクト WNDCLASS を使用することをお勧めします。同じページで trackEvent または trackEventWithPageName を呼び出す場合は、onPageStart と同じ pageObj を渡す必要があります。

はい

customProperties

const char *

ビジネス パラメーター。パラメーターの JSON リテラル テンプレート文字列を指定する必要があります。

いいえ

ページ名

const char *

ページ エンコーディング

いいえ

WNDCLASS *wndClassForeground = new WNDCLASS();
// ページ開始
qtInterface->onPageStart(wndClassForeground, "StartPageName");
std::string start_cusp = R"({
    "param_str": "hello c++",
    "param_num": 1900,
    "param_bool": true,
    "param_list": ["hello", "world", "c++"]
})";
// フォアグラウンドに入る
qtInterface->enterForeground(wndClassForeground, start_cusp.c_str());
// ページ終了
qtInterface->onPageEnd(wndClassForeground);

WNDCLASS *wndClassBackground = new WNDCLASS();
// ページ開始
qtInterface->onPageStart(wndClassBackground, "EndPageName");
std::string end_cusp = R"({
    "param_str": "hello c++",
    "param_num": 1900,
    "param_bool": true,
    "param_list": ["hello", "world", "c++"]
})";
// バックグラウンドに入る
qtInterface->enterBackground(wndClassBackground, end_cusp.c_str());
// ページ終了
qtInterface->onPageEnd(wndClassBackground);

8. その他

8.1 ローカルへのデータ保存を停止する

finiQTPC を呼び出して、データベースからのデータの削除を停止できます。現在、Stop メソッドのみ使用可能です。

API 関数:

パラメータ:

フィールド

機能

詳細

必須

cb

void

ライフサイクルフック

はい

void callBackFunc()
{
	fprintf(stderr, "finiQTPC コールバック\n"); // finiQTPC コールバック
}

qtInterface->finiQTPC(callBackFunc);

リアルタイムデバッグモード 8.2

設定エンドポイントは、WordPress の設定の読み取りと更新を可能にします。詳細については、「設定」をご参照ください。

注: アプリケーションを正式に起動する前に、SDK のリアルタイム デバッグ モードを無効にしてください。

API 関数:

// リアルタイムデバッグモードを有効にします。
QTFORPC_API QT_VOID turnOnRealTimeDebug(QT_MAP configs);
// リアルタイムデバッグを無効にします。
QTFORPC_API QT_VOID turnOffRealTimeDebug();

パラメータ:

フィールド

機能

詳細

必須

configs

const char *

パラメーターを設定します。 入力パラメーターは、マップトラッキングの形式である必要があります。 その後、QT::Helper::QT_Serializable シリアライゼーションを呼び出します。

はい

map<string, string> configs; // configs マップ
configs["debug_key"] = "test"; // デバッグキーを "test" に設定
std::string sconfig;
QT::Helper::QT_Serializable(sconfig, configs);
qtInterface->turnOnRealTimeDebug(sconfig.c_str()); // リアルタイムデバッグを有効にする

qtInterface->turnOnRealTimeDebug(); // リアルタイムデバッグを有効にする

クイックアップロードモードを有効にする 8.3

WordPress のバージョン 4.7 以降では、REST API がデフォルトで有効になっています。以前のバージョンを使用している場合は、REST API プラグインをインストールする必要があります。

注: アプリケーションを正式に起動する前に、SDK クイックアップロードモードを無効にしてください。

API 関数:

// クイックアップロードモードを有効にします。
QTFORPC_API QT_VOID setFastUploadMode();

qtInterface->setFastUploadMode();