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

Quick Tracking:トラッキング API

最終更新日:Jun 09, 2025

1. トラッキングプランを表示する方法

ポイントを埋め込む前に、どこでトラッキングするか、何をトラッキングするかを決定する必要があります。つまり、トラッキングの明確な要件を整理する必要があります。 QuickTracking プラットフォームでは、トラッキングの明示的な要件はトラッキングプランと呼ばれ、トラッキングプランには仕様テンプレートが設計されています。例:

image

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

1. イベントの主体:イベントをトリガーした「人物」。イベントはデバイス IDアカウント ID に分けることができます。イベントには、これらのいずれかが必要です。

  • デバイス ID:Android デバイスと iOS デバイスのデフォルトのデバイス ID は、アプリレベルの一意のデバイス ID であり、Quicktracking によって自動的に生成されます。

    • Android 9 以降を使用するデバイス:SDK は imei、wifimac、androidid、およびシリアル番号を自動的に追跡してデバイス ID を生成します。デバイス ID が生成されると、デバイス ID はローカルに保存されます。デバイス ID は、アプリケーションがアンインストールされた場合、またはアプリケーションデータが削除された場合にのみ再生成されます。

    • Android レベル 10 以上のデバイス:SDK は oaid、gaid、androidid、およびシリアル番号を自動的に追跡してデバイス ID を生成します。デバイス ID が生成されると、デバイス ID はローカルに保存されます。デバイス ID は、アプリケーションがアンインストールされた場合、またはアプリケーションデータが削除された場合にのみ再生成されます。

    • iOS デバイス:SDK は openudid を自動的に追跡してデバイス ID を生成します。デバイス ID が生成されると、キーチェーンに配置されます。デバイス ID は、工場出荷時の設定に戻された場合、またはアプリケーションデータが削除された場合にのみ再生成されます。

    • Quick Tracking SDK は、アプリケーションの C ターミナルユーザーが IDFA と OAID の追跡に同意した場合にのみ、IDFA と OAID を追跡します。 QuickTracking アプリ SDK のみが OAID、GAID、Imei、WiFIMAC、AndroIID、SN、IDFV を追跡できます。

  • アカウント ID:ログイン後のクライアントユーザーのアカウント ID。ユーザーが異なるデバイスからログインすると、デバイス ID は変更されますが、アカウント ID は変更されません。たとえば、ユーザーが携帯電話とパッドを使用して個別にログインする場合などです。

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

3. チャネル属性:広告配信の属性。たとえば、配信チャネル、配信方法、配信コンテンツなど。

4. グローバル属性:一度グローバル設定した後に各イベントによって伝達される属性

5. ページ閲覧イベント:ページの読み込み中に報告されるイベント(トラッキングプランでページコードとイベントコードが等しいイベントも青色でマークされます)

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

2. デバイス ID とアカウント ID を設定する

2.1 デバイス ID の設定

SDK はデフォルトで次のパラメーターを追跡します。

デバイス ID またはデバイス情報

追跡方法

説明

idfa

[ASIdentifierManager advertisingIdentifier].UUIDString

Apple 広告ロゴ

idfv

[[UIDevice currentDevice].identifierForVendor UUIDString]

アプリケーションレベルの識別

openudid

[UIPasteboardpasteboardWithName:slotPBid create:NO]

openUdid(サードパーティ)

taobao utdid

[UTDevice utdid]

Taobao utdid SDK を統合する場合、QuickTracking は追跡します

mcc

[UMUtils mccString]

モバイル信号国コード

mnc

[UMUtils mncString]

セルラーデータネットワーク番号

開発者が上記の表にある特定のデバイス ID の追跡を制御したい場合、たとえば、開発者がデバイス ID を追跡しない、または追跡方法を自分で実装する場合などです。次の例に示すように、対応するブロックコールバックを実装できます。

[QTConfigure customSetIdfaBlock:^NSString *{
  return @""; // idfa を設定しない
}];
[QTConfigure customSetIdfvBlock:^NSString *{
  return @""; // idfv を設定しない
}];
[QTConfigure customSetOpenUdidBlock:^NSString *{
  return @"custom-openudid"; // カスタム openudid を設定する
}];
[QTConfigure customSetUtdidBlock:^NSString *{
  return @"custom-utdid"; // カスタム utdid を設定する
}];
[QTConfigure customSetMccBlock:^NSString *{
  return @"custom-mcc"; // カスタム mcc を設定する
}];
[QTConfigure customSetMncBlock:^NSString *{
  return @"custom-mnc"; // カスタム mnc を設定する
}];

:対応するメソッドを実装するかどうかを決定する際には注意が必要です。メソッドの実装を選択すると、デバイス ID の追跡を担当することになります。 SDK はデバイス ID の追跡を試みません。 SDK で追跡できるデバイス ID が少ないほど、統計データの精度と安定性への悪影響が大きくなります。

// トラッキングドメイン名を設定し、SDK 事前初期化関数を呼び出す前に、トラッキングツールクラス登録関数を呼び出します。
// デバイス ID トラッキング動作を制御する必要がない場合は、カスタムユーティリティクラスを実装して登録する必要はありません。
[QTConfigure customSetIdfvBlock:^NSString *{
    return [[UIDevice currentDevice].identifierForVendor UUIDString]; // idfv を設定する
}];
[QTConfigure setCustomDomain:@"あなたの受信ドメイン名" standbyDomain:nil];
[QTConfigure initWithAppKey:@"あなたの appkey" channel:@"App Store"]; 

SDK はカスタムデバイス ID をサポートしています。カスタムデバイス ID を使用する場合は、初期化前(つまり、init 前)に setCustomDeviceId を有効な値(空でない)に設定する必要があります。

+ (void)setCustomDeviceId:(NSString *)devID;

例:

[QTConfigure setCustomDeviceId:@"xxxxxx"];

注:この関数は、デバイス ID が取得されない場合に有効になります。ローカルデバイスにデバイス ID がすでに存在する場合、設定は無効です。デバイス ID がローカルで取得されている場合は、デバイスをアンインストールして再インストールできます。

2.2 アカウント ID の設定

1. QT はユーザーをカウントするときにデバイスを標準として使用します。アプリケーション自体のアカウントをカウントする必要がある場合は、次の API を使用してください。

API 関数:

+ (void)profileSignInWithPUID:(NSString *)puid;

パラメーター

オプション

タイプ

説明

備考

puid

NSString

アプリケーションユーザーの ID。

長さは 64 バイト未満

注:アカウント ID は設定後、ローカル記憶域に保存されます。アカウント ID は、アプリがアンインストールされた場合、アプリケーションデータがクリアされた場合、または次のログアウトインターフェイスが呼び出された場合にのみ無効になります。それ以外の場合、各イベントはアカウント ID を伝達します。

サンプルコード

[QTMobClick profileSignInWithPUID:@"UserID"];

ユーザーアカウントのバインドが不要になった場合は、ログアウトインターフェイスを呼び出すことができます。ログアウトインターフェイスを呼び出すと、アカウント関連のコンテンツは送信されなくなります。

+ (void)profileSignOff;

サンプルコード

[QTMobClick profileSignOff];

2.3 デバイス ID の取得

インターフェイス関数:

+ (NSString *)umidString;

サンプルコード

NSString *deviceID = [QTConfigure umidString];

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

1. イベントコードが「$$_user_profile」に固定されているカスタムイベントをアップロードします。イベントによって伝達されるイベント属性は、ユーザー属性としてユーザーテーブルに配置されます。

NSDictionary *dict = @{@"sex" : @"girl", @"age" : @"8"};
[QTMobClick event:@"$$_user_profile" attributes:dict];

注:ユーザー属性は、アカウント統計呼び出しの後にアップロードする必要があります

4 チャネル属性

チャネル属性が有効になると、後続のすべてのイベントにこれらの属性が自動的に含まれ、これらの属性と属性値はキャッシュに保存され、APP プロセスが終了した後にクリアされます。データを分析するときに、このプロパティに基づいて表示およびフィルタリングできます。

4.1 H5 リンクによるアプリの起動

  1. アプリの URL プランにはこれらのチャネル属性が含まれており、属性キーは「utm_」で始まる必要があります。これは、SDK によって認識されるキーワードが「utm_」であるためです。例:<URL プラン>? utm_channel=gzh

  2. URL プランをプロジェクトに追加します。 URL プランは、プロジェクト設定の target -> タブ Info ->URL Types にあります。入力済みのプラン。 AppDelegate で関数 [MobClick handleUrl:url] を呼び出して URL を受信します

AppDelegate の呼び出し:

- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
 if ([QTMobClick handleUrl:url]) {
 return YES;
 }

 return YES;
}

SceneDelegate の呼び出し:

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {

 for (UIOpenURLContext *context in connectionOptions.URLContexts) {
 [QTMobClick handleUrl:context.URL];
 }
}

- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {

 [QTMobClick handleUrl:URLContexts.allObjects.firstObject.URL];
}

PS:市場のチャネル配信会社と協力していて、utm_ で始めることができない場合は、グローバル属性 API を使用してチャネル属性を報告できます。属性キーは utm_ で始まる必要があります。

4.2 H5 リンクがアプリマーケットを起動してダウンロードし、アプリケーションを起動するダウンロードヒント:

このシナリオでは、H5 URL に utm_ パラメーターのみが含まれている場合、アプリのダウンロード後に utm_ パラメーターを起動イベントに含めることができません。したがって、「H5 起動イベント」と「アプリケーション起動イベント」の間で「IP アドレスとブラウザー UserAgent」に関してあいまい一致を実行する必要があります。

  1. ユーザーが H5 の「アプリを呼び出す/ダウンロード」ボタンをクリックすると、「アプリ呼び出しイベント($$_app_link)」が報告されます。イベントには、呼び出しアプリの appkey とチャネル属性を含める必要があります。

// サンプルコード
aplus_queue.push({
  action:'aplus.recordAppLink',
  arguments:[{
    targetAppKey: 'アプリケーション appKey', // 必須。起動されるアプリケーションの appKey。
    custom1: 'custom1', // オプション。カスタムパラメーター。
    ...
  }]
})
  1. アプリ起動イベント($$_app_install)は、QT App SDK によって自動的に追跡および報告されます。

  2. QuickTracking システムは、IP アドレスとブラウザー UserAgentに関して、アプリケーション起動イベント($$_app_link)とアプリケーション起動イベント($$_app_install)の間であいまい一致を実行します。使用するときは、アプリアプリケーションの「アプリケーション起動(プリセット)」のチャネルプロパティを直接分析できます。

4.3 アプリマーケットのアクティブデータ統計

初期化関数の 2 番目の入力パラメーターは、アプリケーションのマーケットプレイスです。[QTConfigure initWithAppkey:@"Your appkey" channel:@"App Store"];。 システムのプロパティ セクションでアップデート チャンネルを確認できます。

5 グローバル属性

グローバル属性が登録されると、後続のすべてのイベントにこれらの属性が自動的に含まれ、これらの属性と属性値はキャッシュに保存され、APP プロセスが終了した後にクリアされます。データを分析するときに、このプロパティに基づいて表示およびフィルタリングできます。

5.1 グローバル属性を登録する

/**
 * グローバルプロパティのキーと値のペアを設定します。
 * 既存のグローバル属性のキーが既存のグローバル属性のキーと同じである場合、既存の値が更新されます。
 * 既存のグローバル属性のキーが既存のグローバル属性のキーと一致しない場合、新しいグローバル属性が挿入されます。
 */
+(void) registerGlobalProperty:(NSDictionary *)property;

オプション

タイプ

説明

備考

property

NSDictionary

グローバル属性の属性名と属性値

-

例:

NSDictionary *firstPropertyDict = @{
     @"a" : @"1",
     @"b" : @"2"
};
[QTMobClick registerGlobalProperty:firstPropertyDict];// 現在の globalproperty は a:1 と b:2
    
NSDictionary *secondPropertyDict = @{
     @"b" : @"3",
     @"c" : @"4"
};
[QTMobClick registerGlobalProperty:secondPropertyDict];// 現在の globalproperty は a:1、b:3、c:4

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

/**
 * グローバルプロパティを取得します。存在しない場合は空を返します。
 */
+(NSString *) getGlobalProperty:(NSString *)propertyName;

オプション

タイプ

説明

備考

propertyName

NSString

プロパティ名。大文字と小文字、数字、アンダースコアのみをサポートします!

-

戻り値

NSString

-

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

特定のグローバルプロパティを削除します。プロパティが削除されると、トリガーされる後続のすべてのイベントは、そのプロパティを伝達しなくなります。

/**
 *
 * 指定されたグローバル属性を削除します。
 @param key
 */
+(void) unregisterGlobalProperty:(NSString *)propertyName;

オプション

タイプ

説明

備考

propertyName

NSString

プロパティの名前。文字、数字、アンダースコアのみがサポートされます。

-

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

/**
 * すべてのグローバルプロパティを取得します。存在しない場合は空を返します。
 */
+(NSDictionary *)getGlobalProperties;

オプション

タイプ

説明

備考

戻り値

NSDictionary

返されるグローバルプロパティの値は文字タイプであり、グローバルプロパティの登録時に渡されたパラメータータイプの値と同じである必要があります。

-

5.5 すべてのグローバル属性をクリアする

/**
 * すべてのグローバル属性をクリアします。
 */
+(void)clearGlobalProperties;

6 ページ閲覧イベント API

SDK は、ページ閲覧イベントを報告する 2 つの方法を提供します。自動ペーストラッキングと手動ペーストラッキングです。 2 つの方法を一緒に使用することもできます。

6.1 ページ自動トラッキング

ページの自動トラッキングは、hook システム viewWillAppear と viewWillDisappear、および get className によって実装されます。デフォルトでは、SDK の自動ペーストラッキングは無効になっています。この機能を有効にする場合は、初期化前にこの操作を呼び出すことをお勧めします。

インターフェイス関数:

+ (void)setAutoPageEnabled:(BOOL)value;

オプション

タイプ

説明

備考

value

BOOL

自動ペーストラッキングを有効にするかどうか

  • YES:有効

  • NO:無効(デフォルトでは無効)

サンプルコード

// 自動ペーストラッキングを有効にします。
[QTMobClick setAutoPageEnabled:YES];

6.1.1 単一ページの自動レポートを無効にする

グローバルに自動ペーストラッキングを有効にした場合、この操作を呼び出して自動ペーストラッキングをスキップできます。 viewWillAppear 操作の開始時にこの操作を呼び出すことをお勧めします。現在の自動ペーストラッキングの統計を追跡しない場合は、pageName パラメーターを nil に設定できます。

インターフェイス関数:

+ (void)skipMe:(id)PageObject pageName:(NSString *)pageName;

#import <QTCommon/UMSpmHybrid.h>

- (void)viewWillAppear:(BOOL)animated
{
  
    [super viewWillAppear:animated];

    // 現在のクラスの自動ペーストラッキングはカウントされません。
    [UMSpmHybrid skipMe:[self class] pageName:nil];
}

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

注意: 一部のプラグインは、インストール後に追加の設定が必要な場合があります。プラグインのドキュメントを参照して、必要な設定を行ってください。

/**ページの表示時間を記録するための自動ページ時間統計。
 使用方法:自動統計を完了するには、beginLogPageView:と endLogPageView:の 2 つの関数を呼び出す必要があります。 1 つの関数のみが呼び出された場合、有効なデータは生成されません。
 ページが表示されたら beginLogPageView:を呼び出し、ページを終了したら endLogPageView を呼び出します。
 @param pageName 統計を追跡するページの名前。
 @return void。
 */
+ (void)beginLogPageView:(NSString *)pageName;

/**ページの表示時間を記録するための自動ページ時間統計。
 使用方法:自動統計を完了するには、beginLogPageView:と endLogPageView:の 2 つの関数を呼び出す必要があります。 1 つの関数のみが呼び出された場合、有効なデータは生成されません。
 ページが表示されたら beginLogPageView:を呼び出し、ページを終了したら endLogPageView を呼び出します。
 @param pageName 統計を追跡するページの名前。
 @return void。
 */
+ (void)endLogPageView:(NSString *)pageName;

パラメータ:

オプション

種類

説明

備考

pageName

NSString

統計用のページ エンコーディング

beginLogPageView と endLogPageView の値は同じでなければなりません

注記

  • beginLogPageView: 関数と endLogPageView: 関数の 2 つの関数をペアで呼び出して、自動統計を完了する必要があります。1 つの関数のみが呼び出された場合、有効なデータは生成されません。

  • ページが表示されたら beginLogPageView を呼び出し、ページが閉じられたら endLogPageView を呼び出します。

注: このエンドポイントは、認証されたユーザーのみがアクセスできます。

ViewController クラスで、viewWillAppear: および viewWillDisappear: で、以下のメソッドをペアで呼び出します。

- (void)viewWillAppear:(BOOL)animated
{
 [super viewWillAppear:animated];
 [QTMobClick beginLogPageView:@"Pagename"]; //("Pagename" はページ名で、カスタマイズできます)
}

- (void)viewWillDisappear:(BOOL)animated 
{
 [super viewWillDisappear:animated];
 [QTMobClick endLogPageView:@"Pagename"];
}

6.2.1 ページプロパティ設定

iOS ページプロパティ設定インターフェース updatePageProperties を使用すると、現在のページにカスタムプロパティをアタッチできます。 インターフェース:

/**
 * @brief ページのビジネス パラメーターを更新します。
 *
 * @param pageName ページの名前。例: Page_Detail
 * @param pProperties ビジネス パラメーター。キーと値のペアです。
 *
 * @warning 呼び出しの説明: viewWillDisappear の前に呼び出す必要があります。
 *
 * 最適な場所: viewWillDisappear の前に呼び出す
 */
+(void) updatePageProperties:(NSString *)pageName properties:(NSDictionary *) pProperties;

パラメータ:

パラメータ

タイプ

説明

備考

ページ名

NSString

ページエンコーディング(例:Page_Detail など)

pProperties

NSDictionary詳細については、「」をご参照ください。

ビジネス パラメーター、キーバリュー ペア

注: ページプロパティを設定した後に beginLogPageView を呼び出してください。

ヘッダーファイルの紹介:

#import <QTCommon/UMSpm.h>

[UMSpm updatePageProperties:@"page_home" properties: @{@"page_home_key":@"page_home_val"}]; // UMSpm updatePageProperties:@"page_home"、properties: @{@"page_home_key":@"page_home_val"} を設定します

注: ページに対して設定できるのは手動トラッキングのみです。

6.2.2 ページプロパティのパススルー

さらに、Quick Tracking SDK は、パススルーページプロパティトラッキングインターフェイス updateNextPageProperties も提供します。これにより、次のページにカスタムプロパティをアタッチできます。

/**
 * @brief 次のページのビジネス パラメーターを更新します。
 *
 * @param properties ビジネス パラメーターを次のページに渡します。 KV ペア
 *
 * @warning 呼び出しの説明:呼び出しは、次のページの pageAppear の前に実行する必要があります。 そうしないと、エラーが発生します。
 *
 * 最適な場所:次のページの pageAppear の前に呼び出す必要があります
 */
+(void) updateNextPageProperties:(NSDictionary *) properties;

詳細については、「WordPress REST API」をご参照ください。

オプション

タイプ

説明

備考

properties

NSDictionary

ビジネス パラメーターを次のページに渡します。 key-value ペア

注: このガイドでは、基本的な使用方法のみを説明しています。詳細については、上記のリンク先のリソースをご参照ください。

[UMSpm updateNextPageProperties:@{@"news_next_key":@"news_next_val"}]; // 次ページのプロパティを更新

注: ページ属性には手動トラッキングのみ使用できます。

7 イベントトラッキング

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

7.1 イベントトラッキング

インターフェース:

+ (void)event:(NSString *)eventCode; // イベントコード

+ (void)event:(NSString *)eventCode attributes:(NSDictionary *)attributes; // イベントコード、属性

+ (void)event:(NSString *)eventId pageName:(NSString *)pageName attributes:(NSDictionary *)attributes; // イベントID、ページ名、属性

パラメーター

オプション

タイプ

説明

備考

eventCode

NSString

イベントコード

トラッキングプランにおけるクリック、露出、カスタムイベントのイベントコード

attributes

NSDictionary

カスタムプロパティ

- 属性のキーの値を空にすることはできません。

- 値は、String、Long、Integer、Float、Double、Short、または Array タイプ(配列内の要素は String である必要があります)のみ可能です。

pageName

NSString

ページエンコーディング

イベントが発生したページ、およびトラッキングプランにおけるクリック、露出、カスタムイベントのページコード。

イベントアップロード数量制限:

  • カスタムプロパティキー文字列の最大長:1024

  • カスタム属性値文字列の最大長:1024 * 4

  • カスタム属性マップの長さ(パラメーターの数):100 キーバリューペア

  • カスタムプロパティ値が配列要素の場合、プロパティ値の最大配列長は 100 です。

  • 単一のログメッセージの全長は 2MB に制限されています。

例 1:

アプリケーションで「転送」イベントが発生した回数をカウントし、転送関数で呼び出します。

[QTMobClick event:@"Forward"]; // 転送イベントを記録

例 2:

アプリケーションで「購入」イベントが発生した回数と、購入された商品の種類と数量をカウントし、購入関数で呼び出します。

NSDictionary *dict = @{@"type" : @"book", @"quantity" : @"3"}; // 購入商品の種類と数量
[QTMobClick event:@"purchase" attributes:dict]; // 購入イベントと属性を記録

例 3:

NSDictionary *dict = @{@"type" : @"book", @"quantity" : @"3"}; // 購入商品の種類と数量
[QTMobClick event:@"purchase" pageName:@"ViewController" attributes:dict]; // 購入イベント、ページ名、属性を記録

JavaScript で REST API を使用する

8.1 フル埋込ポイントの適用範囲

注: この例では、基本的な認証は使用していません。認証が必要なエンドポイントにアクセスする場合は、リクエストに認証資格情報を含める必要があります。

8.2 全埋点インターフェースの説明

8.2.1 自動ページトラッキングインターフェイス

説明

自動トラッキングページは、フックシステム viewWillAppear と viewWillDisappear で実装クラス名を取得します。初期化前に呼び出すことをお勧めします。デフォルトでは無効になっています。

/**データを自動的に追跡するかどうかを設定します。デフォルト値は NO です。
 @ param value が YES に設定されている場合、QT SDK はページ情報を自動的に追跡します
 */
+ (void)setAutoPageEnabled:(BOOL)value;

ヒント: インストールプロセス中にデータベース名、ユーザー名、パスワードが必要になります。

 [QTMobClick setAutoPageEnabled:YES];
 // ドメイン名を設定します。
 [QTConfigure setCustomDomain:@"Your receipt domain name" standbyDomain:nil]; 
 // アプリケーションキーを初期化します。
 [QTConfigure initWithAppkey:@"AppKey of your application" channel:@"App Store"]; 

ページの自動ページトラッキングを無効にする

/**
 * @brief 現在のページの統計情報をスキップします。
 *
 * @param PageObject コンテナーのオブジェクト。このパラメーターは、ページを自動的に取得するために使用されます。デフォルトでは、このパラメーターは nil に設定できます。
 * @param pageName ページの名前。このパラメーターは、ページを手動で構成する場合に使用されます。自動ページ取得を構成する場合は、nil を入力できます。
 * @warning ページを設定する前に、この操作を呼び出すことをお勧めします。この操作を呼び出した後、ネイティブページはデータを送信しません。
 *                          
 */
+ (void)skipMe:(id)PageObject pageName:(NSString *)pageName;

詳細については、「Plugin Developer Handbook」をご参照ください。

[UMSpmHybrid skipMe:self pageName:nil]; // UMSpmHybrid をスキップし、ページ名を nil に設定します。

8.2.2 コントロールを開き、データ追跡をクリックする

説明

自動追跡イベントは次のとおりです。

  • hook system sendAction:to:from:forEvent: は、コントロール実行メソッドの監視を実装します

  • Listening addGestureRecognizer: すべてのクリック動作を実装します

  • hook tableView:didSelectRowAtIndexPath: は、tableView のクリック動作をサポートします

  • hook trackingView:didSelectItemAtIndexPath: は、trackingView のクリック動作をサポートします

注: このチュートリアルでは、基本的な JavaScript の知識があることを前提としています。

/**クリックイベントを自動的に追跡するかどうかを設定します。デフォルト値は NO です。
 @ param value が YES に設定されている場合、QT SDK はクリックイベントを自動的に追跡します
 */
+ (void)setAutoEventEnabled:(BOOL)value;

例:

 [QTMobClick setAutoEventEnabled:YES];
 // ドメイン名を設定します。
 [QTConfigure setCustomDomain:@"Your receipt domain name" standbyDomain:nil]; 
 // アプリケーションキーを初期化します。
 [QTConfigure initWithAppkey:@"AppKey of your application" channel:@"App Store"]; 

サポートされているコントロール:

コントロール名

説明

UITableView

UItrackingView

UIImageView

UITapGestureRecognizer 動作が可能です

UILabel

UITapGestureRecognizer 動作が可能です

UIButton

UISwitch

UIStepper

UISegmentedControl

UISlider

UIPageControl

UITabBarItem

UIBarButtonItem

コンテナーのクリックイベントを無視する

/**
 * @abstract
 * ページ上のクリックを無視します。
 *
 * @param PageObject コンテナー。
 */
+(void)ignorePageView:(id)PageObject;

例:

// このメソッドは複数呼び出しをサポートし、トラッキングを無視します。
[QTAutoTrack ignorePageView:self];

特定の種類のコントロールのクリックイベントの自動追跡を無視する

特定のタイプの コントロールに対する クリック イベントの自動追跡は、ignoreViewType メソッドを使用することで無視されます。

/**
 * @abstract
 * 特定の種類のクリックを無視します。
 *
 * @param aClass 対応するクラスを表示します。
 */
+(void)ignoreViewType:(Class)aclass;

注: この例では、fetch API を使用しています。これは、最新のブラウザでサポートされています。

// このメソッドは複数の呼び出しをサポートし、トラッキングを無視します。
[QTAutoTrack ignoreViewType:[UIButton class]];    
[QTAutoTrack ignoreViewType:[UISwitch class]];

注意: 一部のプラグインは、有効化後に追加の設定が必要な場合があります。

このコードは、my-plugin/v1/hello/<name> というエンドポイントを作成します。<name> の部分には、ユーザーの名前が入ります。例えば、my-plugin/v1/hello/John に GET リクエストを送信すると、"Hello, John!" というメッセージが返されます。詳細については、「カスタムエンドポイントの追加」をご参照ください。

8.2.3 ページ設定カスタム情報

注: このチュートリアルでは、基本的な JavaScript の知識があることを前提としています。

-(NSString *)getUMPageName メソッドを実装することにより、カスタム エンコーディングが返されます

-(NSString *)getUMPageName
{
   // 「testPageCode」を返します。
   return @"testPageCode";
}

重要: REST API を使用するには、WordPress サイトで REST API が有効になっている必要があります。

注: このチュートリアルでは、基本的な JavaScript の知識があることを前提としています。

-(NSDictionary *)getUMPageProperties
{
   // key1 と key2 を持つ辞書を返す
   return @{@"key1":@"val1",@"key2":@"val2"};
}

ページ設定ソース ( page_referrer ) 情報

/wp-json/wp/v2/tags/1

- (NSString *)getUMScreenUrl {
    // UMスクリーン URL を取得します。
    return @"um//um/page";
}

8.2.4 コントロールクリックイベントのカスタムプロパティの設定

このメソッドを使用すると、特定のコントロールにカスタムプロパティを設定できます。 カスタムプロパティには、複数のキーと値のペアを設定できます。 キーと値はどちらも文字列型である必要があります。 カスタムプロパティと値は、このコントロールのフルクリックイベントデータに含まれています。

button.UMAnalyticsViewProperties=@{@"key11":@"val11"}; // key11 に val11 を設定

注: このチュートリアルでは、基本的な例を示しています。より高度な使用方法については、公式ドキュメントを参照してください。

このメソッドを使用すると、特定のコントロールのイベントエンコーディングを設定できます。

button.UMAnalyticsEventCode=@"abcd123"; // button.UMAnalyticsEventCode に @"abcd123" を設定

9 シェア分割

ヒント: ブラウザの開発者ツールを使用して、API リクエストとレスポンスを検査できます。

この プラグイン は WordPress 5.0 以上で動作します。

  1. WordPress 5.0 以後のバージョンでは、「Gutenberg」と呼ばれる新しいエディターが導入されています。詳細については、「Gutenberg のドキュメント」をご参照ください。

  2. WordPress REST API を使用すると、投稿、ページ、ユーザー、その他の WordPress データにアクセスできます。詳細については、「WordPress REST API ハンドブック」をご参照ください。

9.1 ソース共有パラメーター

/*
 * ソース共有パラメーター取得 API
 * return @{ @"$$_ref_share_id": @"xxxxx", @"$$_ref_share_url": @"xxxxx"}
 **/

+(nullable NSDictionary *)getRefShareParams;

ヒント: ブラウザの開発者ツールを使用して、リクエストとレスポンスを検査できます。

iOS SDK V1.5.0.PX 以降

説明

共有者がアプリを開いたときにソース共有 ID とソース共有 URL を取得するために使用される API

リクエストパラメーター

注: この例では、/wp-json/wp/v2/posts エンドポイントを使用して投稿データを取得しています。 他のエンドポイントを使用して、さまざまな種類のデータにアクセスできます。

レスポンスパラメーター

デフォルトでは、空の辞書が返されます。 {} に値がある場合、次の関数が返されます。

オプション

パラメータ

デフォルト値

セマンティクス

備考

$$_ref_share_url

String

""

共有 ID を含まないソース共有 URL

なし。

$$_ref_share_id

String

""

ソース共有 ID

なし。

呼び出し例

-(void)onShare {
    __weak typeof(self) weakSelf = self;
    NSDictionary* refShareParams = [QTMobClick getRefShareParams];
    NSString* $$_ref_share_id = [refShareParams objectForKey:@"$sid"];
    
    [QTMobClick requestShareParams:@"https://www.lydaas.com/?utm_source=share" params:@{
        @"title": @"This is a shared title", // 共有タイトル
        @"campaign":@"This is a sharing activity", // 共有アクティビティ
        @"shareId": $$_ref_share_id
    } timeout:0 shareResultHandler:^(id  _Nullable result, NSError * _Nullable error) {
        NSLog(@"result === %@", result);
        if (error) {
            NSLog(@"error === %@", error);
        }
        __block NSString *shareId = [(NSDictionary*)result objectForKey:@"$sid"];
        
        NSDictionary *dict = @{
            @"$$_share_id": shareId,
            @"$$_share_url" : @"https://www.lydaas.com/?utm_source=share",
            @"$$_share_title" : @"Share activity A", // 共有アクティビティ A
            @"$_share_campaign_id" : @"This is a custom sharing activity", // カスタム共有アクティビティ
            @"$$_share_type" : @"User-defined sharing platform" // ユーザー定義の共有プラットフォーム
        };
        [QTMobClick event:@"$$_share" attributes:dict];
        dispatch_async(dispatch_get_main_queue(), ^{
            UIAlertController *alertController = [UIAlertController 
                alertControllerWithTitle:@"Share parameters" message:[NSString 
                stringWithFormat:@"The request sharing parameter results are as follows:\n\n {\n $sid:%@ \n} \n", shareId]  // リクエスト共有パラメータの結果は以下のとおりです。
                preferredStyle:UIAlertControllerStyleAlert];
            // Create a UIAlertAction. // UIAlertAction を作成します。
            UIAlertAction * firmAction = [UIAlertAction actionWithTitle:@"I got it"  // 了解しました
                style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                // Processing after the OK button is clicked // OK ボタンがクリックされた後の処理
                NSLog(@"The user has been copied"); // ユーザーがコピーされました
                UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
                pasteboard.string = shareId;
            }];
            [alertController addAction:confirmAction];
            [weakSelf presentViewController:alertController animated:YES completion:nil];
        });
    }];
}

9.2 リクエスト共有パラメーター

#import <QTCommon/MobClick.h>

/*
 * パラメータ取得 API を共有します。
 * @param url: 共有ページの URL。このパラメータは必須です。
 * @param params 共有可能なパラメータ。null の場合もあります。
 * {
 * @"title": 共有タイトル, // null の場合もあり、最大長は 4*1024 です
 * @"shareId": ソース共有の ID。// 値は null の場合もあります。
 * @"campaign": 共有アクティビティ, // null の場合もあり、最大長は 4*1024 です
 * ... 拡張予定
 * }
 * @param timeout リクエストのタイムアウト期間(秒単位)。有効な値:0 ~ 10。0 を指定すると、SDK はデフォルト値の 3 秒を使用します。
 * @param shareResultHandler 結果のコールバックオブジェクト。このパラメータは必須であり、null にすることはできません。
 */

+(void)requestShareParams:(nonnull NSString *)url
                   params:(nonnull NSDictionary *)params
                  timeout:(int)timeout
       shareResultHandler:(nonnull QTShareResultHandler)shareResultHandler;

注: この例では、WordPress が同じドメインにインストールされていることを前提としています。異なるドメインにインストールされている場合は、CORS を有効にする必要があります。

iOS SDK V1.5.0.PX 以降

注: この例では、WordPress が同じドメインでホストされていることを前提としています。異なるドメインでホストされている場合は、完全な URL を使用する必要があります。

注: このチュートリアルでは、基本的な例のみを示しています。REST API の詳細については、公式ドキュメントを参照してください。

リクエストパラメーター

オプション

パラメーター

デフォルト値

意味

備考

url

NSString

nil

共有ページの URL

必須です。nil にすることはできません。

params

NSDictionary

nil

API リクエストパラメーターを取得するための共有パラメーター

  • オプション

campaign: 共有アクティビティの識別子。文字列型、デフォルト値は ""、最大長は 4*1024 文字です。

title: タイトルを共有します。文字列型、デフォルト値は ""、最大長は 4*1024 文字です。

shareId: ソース共有の ID。文字列型、デフォルト値は "" です。

timeout

int

0

インターフェースのタイムアウト期間

有効な値: 1 ~ 10。単位: 秒。SDK のデフォルトのタイムアウト期間は 3 秒です。

shareResultHandler

QTShareResultHandler

nil

結果コールバックオブジェクト

必須です。nil にすることはできません。

注: コールバックコンテキストは、SDK 内部ネットワークリクエストのバックグラウンド ワーカースレッドです。コールバックメソッドで UI コントロールに対する操作を実行する必要がある場合は、UI スレッドハンドラを使用して関連操作を実行してください

レスポンスパラメーター

オプション

パラメーター

デフォルト値

セマンティクス

備考

result

NSDictionary

nil

共有パラメーター API リクエスト結果

プロパティを含みます

$sid、NSString 型、共有 ID

error

NSError

nil

共有パラメーター API リクエストでエラーが報告されます。

なし。

おめでとうございます! WordPress のインストールが完了しました。

-(void)onShare {
  __weak typeof(self) * weakSelf = self;
 	[QTMobClick requestShareParams:@"https://www.lydaas.com/?utm_source=share" 
   	params:@{
     @"title": @"This is a shared title",
     @"campaign":@"This is a sharing activity",
     @"shareId": @"This is a shared ID"
     } 
   timeout:0 
   shareResultHandler:^(id  _Nullable result, NSError * _Nullable error) {
     NSLog(@"result === %@", result);
     if (error) {
       NSLog(@"error === %@", error);
     }
     __block NSString *shareId = [(NSDictionary*)result objectForKey:@"$sid"]; 
     NSDictionary *dict = @{
       @"$$_share_id": shareId, 
       @"$$_share_url" : @"https://www.lydaas.com/?utm_source=share",
       @"$$_share_title" : @"Share activity A",
       @"$_share_campaign_id" : @"This is a custom sharing activity",
       @"$$_share_type" : @"User-defined sharing platform"
     };
     [QTMobClick event:@"$$_share" attributes:dict];
     dispatch_async(dispatch_get_main_queue(), ^{
       UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Share parameters"
                                             message:[NSString stringWithFormat:
                                             @ "The request sharing parameter results are as follows:\n\n {\n $sid:%@ \n} \n", shareId] 
                                             preferredStyle:UIAlertControllerStyleAlert];
       // UIAlertAction を作成します。
       UIAlertAction * firmAction = [UIAlertAction actionWithTitle:@"I got it"
                                       style:UIAlertActionStyleDefault
                                       handler:^(UIAlertAction * _Nonnull action) {
                                         // OK ボタンクリック後の処理
                                         NSLog(@"The user has been copied");
                                         UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
                                         pasteboard.string = shareId;                                                     
                                       }];
       [alertController addAction:confirmAction];
       [weakSelf presentViewController:alertController animated:YES completion:nil];
     });
   }];
}

9.3 イベントのレポートと共有

プリセットイベントコーディング $$_share を使用してレポート共有イベントを報告します

主な機能:

[QTMobClick requestShareParams:@"https://www.lydaas.com/?utm_source=share"
                        params:@{
    @"title": @"This is a shared title", // 共有タイトル
    @"campaign":@"This is a sharing activity", // 共有アクティビティ
    @"shareId": @"This is a shared ID" // 共有ID
}
                        timeout:0
            shareResultHandler:^(id  _Nullable result, NSError * _Nullable error) {
    NSLog(@"result === %@", result);
    if (error) {
        NSLog(@"error === %@", error);
    }
    __block NSString *shareId = [(NSDictionary*)result objectForKey:@"$sid"];
    NSDictionary *dict = @{
        @"$$_share_id": shareId,
        @"$$_share_url" : @"https://www.lydaas.com/?utm_source=share",
        @"$$_share_title" : @"Share activity A", // 共有アクティビティ A
        @"$_share_campaign_id" : @"This is a custom sharing activity", // カスタム共有アクティビティ
        @"$$_share_type" : @"User-defined sharing platform" // ユーザー定義の共有プラットフォーム
    };
    [QTMobClick event:@"$$_share" attributes:dict];   
}];

ヒント: 認証が必要なエンドポイントにアクセスするには、認証ヘッダーを含める必要があります。