メインコンテンツまでスキップ

自動収集

最終更新 2026/10/05

Android SDKは、インストール、起動、終了などのイベントの自動収集に対応しています。

1. はじめに​

AEシステムはデータを自動的に収集するためのインターフェースを提供しており、業務要件に応じて、自動収集するデータを選択できます。

現在対応している自動収集イベントの種類は次のとおりです:

  1. インストールイベント:APPがインストールされた行動を記録します
  2. 起動イベント:APPを開く操作と、バックグラウンドからAPPを開く操作を含みます
  3. 終了イベント:APPを閉じる操作と、Appがバックグラウンドに移行する操作を含みます。同時に、起動していた時間も収集します
  4. 閲覧イベント:ユーザーがAPP内でページ(Activity)を閲覧した行動
  5. クリックイベント:ユーザーがAPP内でコントロールをクリックした行動
  6. クラッシュイベント:APPがクラッシュしたときに、クラッシュ情報を記録します

以下では、各データの収集方法について詳しく説明します

2. 自動収集を有効にする​

enableAutoTrackを呼び出して、自動収集機能を有効にできます:

//APPインストールイベント TDAnalytics.TDAutoTrackEventType.APP_INSTALL
//APP起動イベント TDAnalytics.TDAutoTrackEventType.APP_START
//APP終了イベント TDAnalytics.TDAutoTrackEventType.APP_END
//APPページ閲覧イベント TDAnalytics.TDAutoTrackEventType.APP_VIEW_SCREEN
//APPコントロールクリックイベント TDAnalytics.TDAutoTrackEventType.APP_CLICK
//APPクラッシュイベント TDAnalytics.TDAutoTrackEventType.APP_CRASH
//自動収集イベントを有効化
TDAnalytics.enableAutoTrack(TDAnalytics.TDAutoTrackEventType.APP_START | TDAnalytics.TDAutoTrackEventType.APP_END
| TDAnalytics.TDAutoTrackEventType.APP_INSTALL | TDAnalytics.TDAutoTrackEventType.APP_VIEW_SCREEN | TDAnalytics.TDAutoTrackEventType.APP_CLICK
| TDAnalytics.TDAutoTrackEventType.APP_CRASH);
ヒント

コントロールのクリックイベントやFragmentの閲覧イベントを収集する必要がある場合は、自動収集プラグインを統合する必要があります。このページの「7. オプションのプラグイン」を参照してください。

3. 詳細​

3.1 インストールイベント​

APPインストールイベントは、APPの実際のインストールを記録するもので、APPの起動時に送信されます。イベントのトリガー時間は、APPのインストール後に初めて起動した時間です。APPのアップグレードではインストールイベントはトリガーされませんが、削除して再インストールした場合はインストールイベントが送信されます。

  • イベント名:ta_app_install

3.2 起動イベント​

APP起動イベントは、ユーザーがAPPを開いたとき、またはバックグラウンドからAPPを復帰させたときにトリガーされます。イベントの詳細は次のとおりです:

  • イベント名:ta_app_start
  • プリセットプロパティ:#resume_from_background、ブール型。APPがユーザーによって開かれたのか、バックグラウンドから復帰したのかを示します。値がtrueの場合はバックグラウンドからの復帰、falseの場合は直接開かれたことを示します。
  • なお、V2.8.1以降、SDKはデフォルトで、バックグラウンドでのサイレント起動(バックグラウンドサービスの直接起動やプッシュなど)によってトリガーされるstartイベントを許可しなくなりました。res/valuesにリソースファイルta_public_config.xmlを追加することで有効にできます
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="TAEnableBackgroundStartEvent">true</bool>
</resources>

3.3 終了イベント​

APP終了イベントは、ユーザーがAPPを閉じたとき、またはAPPをバックグラウンドに移したときにトリガーされます。イベントの詳細は次のとおりです:

  • イベント名:ta_app_end
  • プリセットプロパティ:#duration、数値型。今回のAPPアクセス(起動から終了まで)の時間を示し、単位は秒です。

3.4 ページ閲覧イベント​

APPページ閲覧イベントは、ユーザーがページ(Activity)を閲覧したときにトリガーされます。イベントの詳細は次のとおりです:

  • イベント名:ta_app_view

  • プリセットプロパティ:

    #screen_name、文字列型。Activityのパッケージ名.クラス名です

    #title、文字列型。Activityのタイトルで、Activityのtitle属性の値を取ります

ページ閲覧イベントには、分析の価値を広げるために他のプロパティを追加できます。以下は、ページ閲覧イベントのプロパティをカスタマイズする方法です

3.4.1 Fragmentのページ閲覧イベントの自動収集を有効にする​

android.support.v4.app.FragmentのFragmentについては、次の方法でページ閲覧イベントを自動収集できます:

SDKの初期化が完了した後、次のメソッドを呼び出してFragmentの自動収集機能を有効にします

TDAnalytics.trackFragmentAppViewScreen();

android.app.FragmentのFragmentについては、次の方法でページ閲覧イベントを自分で呼び出すことができます:

TDAnalytics.trackViewScreen(targetFragment);
  • targetFragmentは、ページ閲覧イベントを送信する必要があるFragmentに置き換えてください

3.4.2 ページ閲覧イベントのプロパティのカスタマイズ​

Activityのページ閲覧イベントについては、ScreenAutoTrackerインターフェースのメソッドを実装することでプロパティを追加できます。次の2つのメソッドにより、ページ閲覧イベントにページのURL情報やその他のカスタムプロパティを追加できます:

public class MainActivity extends AppCompatActivity implements ScreenAutoTracker {
private Context mContext;

@Override
public String getScreenUrl() {
return "thinkingdata://page/main";
}

@Override
public JSONObject getTrackProperties() throws JSONException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("param1", "ABCD");
jsonObject.put("param2", "thinkingdata");
return jsonObject;
}
}

このうち、getScreenUrlの戻り値はそのActivityのURL Schemaとして使用されます。そのページの閲覧イベントがトリガーされると、プリセットプロパティ#urlが追加され、その値は現在のページのURL Schemaになります。同時に、SDKは遷移前のページのURL Schemaを取得し、取得できた場合はプリセットプロパティ#referrerに参照元アドレスとして追加します。

getTrackPropertiesの戻り値は、そのページの閲覧イベントのカスタムプロパティで、そのページの閲覧イベントに自動的に追加されます

Fragmentのページ閲覧イベントについては、プロパティを追加する方法を2つ提供しています

  • @ThinkingDataFragmentTitleを使用してプロパティを追加する
@ThinkingDataFragmentTitle(title = "myFragment")
public class ListViewFragment extends BaseFragment {
// your fragment implementations
}
  • ScreenAutoTrackerインターフェースを実装する
@Override
public JSONObject getTrackProperties() {
try {
JSONObject properties = new JSONObject();
properties.put("#title", "RecyclerViewFragment");
return properties;
} catch (JSONException e) {
// ignore
}
return null;
}

3.5 クリックイベント​

APPコントロールクリックイベントは、ユーザーがコントロール(view)をクリックしたときにトリガーされます

  • イベント名:ta_app_click

  • プリセットプロパティ:

    #screen_name、文字列型。コントロールが属するActivityのパッケージ名.クラス名です

    #title、文字列型。コントロールが属するActivityのタイトルで、Activityのtitle属性の値を取ります

    #element_content、文字列型。コントロールの内容です

    #element_type、文字列型。コントロールの種類です

    #element_id、文字列型。コントロールのIDで、デフォルトではandroid:idを使用します

    #element_position、文字列型。コントロールにpositionがある場合にのみ送信されます

    #element_selector、文字列型。コントロールのviewPathを連結したものです

ページ上のViewのクリックイベントについては、分析の価値を広げるために、次のような複数の方法でプロパティを追加設定できます:

3.5.1 コントロールIDのカスタマイズ​

コントロールのIDはデフォルトでandroid:idを使用します。この属性を取得できない場合や、コントロールIDをカスタマイズしたい場合は、次の方法で#element_idプロパティを上書きできます

TDAnalytics.setViewID(view,viewID);

Dialogについては、次の方法を使用できます:

//android.app.Dialog
TDAnalytics.setViewID(view,viewID);

または

//android.support.v7.app.AlertDialog
TDAnalytics.setViewID(view,viewID);

パラメータviewはコントロールIDを設定するview、パラメータviewIDは設定するコントロールIDです。そのコントロールのクリックイベントを送信する際、#element_idの値はここで渡した値になります

3.5.2 コントロールクリックイベントのプロパティのカスタマイズ​

次の方法で、特定のコントロール(view)のクリックイベントにカスタムプロパティを追加できます:

TDAnalytics.setViewProperties(view,properties);

パラメータviewはカスタムプロパティを設定するview、パラメータpropertiesはJSONObject型で、設定するカスタムプロパティです。そのコントロールのクリックイベントを送信する際に、これらのプロパティが追加されます。

また、ExpandableListView、ListView、GridViewについては、Adapterでインターフェースを実装することで、特定のitemをクリックしたときのカスタムプロパティを追加することもできます。

  • ExpandableListViewではThinkingExpandableListViewItemTrackPropertiesインターフェースを実装する必要があります
public interface ThinkingExpandableListViewItemTrackProperties {
/**
* groupPosition、childPosition の item をクリックしたときのプロパティを追加
* @param groupPosition
* @param childPosition
* @return
* @throws JSONException
*/
JSONObject getThinkingChildItemTrackProperties(int groupPosition, int childPosition) throws JSONException;

/**
* groupPosition の item をクリックしたときのプロパティを追加
* @param groupPosition
* @return
* @throws JSONException
*/
JSONObject getThinkingGroupItemTrackProperties(int groupPosition) throws JSONException;
}
  • ListViewとGridViewではThinkingAdapterViewItemTrackPropertiesインターフェースを実装する必要があります
public interface ThinkingAdapterViewItemTrackProperties {
/**
* position の item をクリックしたときのプロパティを追加
* @param position
* @return
* @throws JSONException
*/
JSONObject getThinkingItemTrackProperties(int position) throws JSONException;
}

3.5.3 AlertDialogのクリックイベントへのページ(Activity)情報の追加​

AlertDialog(android.app.AlertDialogとandroid.support.v7.app.AlertDialog)のクリックイベントについては、次の方法で所属するページ(Activity)を紐付けることができます。そのクリックイベントには、所属ページの#screen_nameと#titleプロパティが追加されます。

  • dialog.show()を呼び出してdialogを表示する場合は、次の方法を使用してください:
dialog.setOwnerActivity(targetActivity);
  • builder.show()を呼び出してdialogを表示する場合は、次の方法を使用してください:
builder.show().setOwnerActivity(activity);

3.5.4 アノテーション@ThinkingDataTrackViewOnClickによるコントロールクリックイベントの送信​

android:onclickを使用してコントロール(view)にクリックイベントの呼び出しメソッドを追加している場合は、その呼び出しメソッドにアノテーション@ThinkingDataTrackViewOnClickを追加できます。その呼び出しメソッドが実行されると、SDKはコントロールクリックイベントを送信します

@ThinkingDataTrackViewOnClick
public void buttonOnClick(View v){}

メソッドbuttonOnClickが呼び出されると、コントロールクリックイベントが送信されます

3.6 クラッシュイベント​

APPで捕捉されない例外が発生すると、APPクラッシュイベントが送信されます

  • イベント名:ta_app_crash
  • プリセットプロパティ:#app_crashed_reason、文字列型。クラッシュ時のスタックトレースを記録します

4. 自動収集イベントの無視​

次の方法で、特定のページまたはコントロールの自動収集イベントを無視できます

4.1 ページの自動収集イベントを無視する​

特定のページ(Activity)で自動収集イベント(ページ閲覧イベントとコントロールクリックイベントを含む)を送信したくない場合は、次の方法で無視できます:

//単一ページの無視
TDAnalytics.ignoreAutoTrackActivity(MainActivity.class);
//複数ページの無視
List<Class<?>> classList = new ArrayList<>();
classList.add(MainActivity.class);
TDAnalytics.ignoreAutoTrackActivities(classList);

ActivityまたはFragmentの前にアノテーション@ThinkingDataIgnoreTrackAppViewScreenを追加して、特定のActivityまたはFragmentのページ閲覧イベントを無視することもできます

//TestActivity のページ閲覧イベントを無視
@ThinkingDataIgnoreTrackAppViewScreen
public class TestActivity extends AppCompatActivity {
...
}

Activityの前にアノテーション@ThinkingDataIgnoreTrackAppViewScreenAndAppClickを追加すると、特定のActivityのページ閲覧イベントと、そのページ内のコントロールクリックイベントを無視できます

//TestActivity のページ閲覧イベントと、そのページ内のコントロールクリックイベントを無視
@ThinkingDataIgnoreTrackAppViewScreenAndAppClick
public class TestActivity extends AppCompatActivity {
...
}

4.2 特定の種類のコントロールのクリックイベントを無視する​

特定の種類のコントロールのクリックイベントを無視する必要がある場合は、次の方法で無視できます

TDAnalytics.ignoreViewType(ignoredClass);
  • ignoredClassは無視するコントロールの種類です(例:Dialog、Checkboxなど)

4.3 特定の要素(View)のクリックイベントを無視する​

特定の要素(View)のクリックイベントを無視したい場合は、次の方法で無視できます

TDAnalytics.ignoreView(targetView);
  • targetViewは無視するViewです

5. アノテーションによるイベントのクイック設定​

特定のメソッドの呼び出し回数を監視したい場合や、あるメソッドが呼び出されるたびにイベントを送信する必要がある場合は、アノテーション@ThinkingDataTrackEventを使用して、送信するイベントをすばやく設定できます。なお、プロパティには変数を渡せないため、シンプルなイベントの送信にのみ適しています

//アノテーションを使用
@ThinkingDataTrackEvent(eventName = "event_name", properties = "{\"paramString\":\"value\",\"paramNumber\":123,\"paramBoolean\":true}")
public void fun(){}

この場合、メソッドfunが呼び出されると、イベント名がevent_nameで、プロパティが"paramString":"value"、"paramNumber":123、"paramBoolean":trueのイベントが送信されます

6. 自動収集イベントのプリセットプロパティ​

以下のプリセットプロパティは、各自動収集イベントに固有のプリセットプロパティです

  • APP起動イベント(ta_app_start)のプリセットプロパティ
プロパティ名画面表示名プロパティタイプ説明

#resume_from_background

バックグラウンドからの復帰かどうか

ブール値

APPが開かれたのか、バックグラウンドから復帰したのかを示します。値がtrueの場合はバックグラウンドからの復帰、falseの場合は直接開かれたことを示します
#start_reason

アプリの起動元

テキスト

内容はJSON文字列です。アプリがurlまたはintentの方式でAPPを開いた場合、urlの内容とintent内のdataデータが自動的に記録されます。サンプル:{url:"thinkingdata://","data":{}}

#background_duration

バックグラウンド滞在時間

数値

2回のstartイベントが発生する間に、アプリがバックグラウンドにあった時間を記録します。

単位:秒

  • APP終了イベント(ta_app_end)のプリセットプロパティ
プロパティ名画面表示名プロパティタイプ説明
#durationイベント継続時間数値今回のAPPアクセス(起動から終了まで)の時間を示します。単位は秒です
  • APPページ閲覧イベント(ta_app_view)のプリセットプロパティ
プロパティ名日本語名プロパティタイプ説明
#title

ページタイトル

テキスト現在のページのActivityのタイトルで、Activityのtitle属性の値を取ります
#screen_nameページ名テキスト現在のページのActivityのパッケージ名.クラス名です
#urlページアドレステキスト現在のページのアドレスです。getScreenUrlを呼び出してurlを設定する必要があります
#referrer参照元アドレステキスト遷移前のページのアドレスです。遷移前のページでgetScreenUrlを呼び出してurlを設定する必要があります
  • APPコントロールクリックイベント(ta_app_click)のプリセットプロパティ
プロパティ名日本語名プロパティタイプ説明
#titleページタイトルテキストコントロールが属するActivityのタイトルで、Activityのtitle属性の値を取ります
#screen_nameページ名テキストコントロールが属するActivityのパッケージ名.クラス名です
#element_id要素IDテキストコントロールのIDです。デフォルトではandroid:idを使用し、setViewIDを呼び出して設定できます
#element_type要素タイプテキストコントロールの種類
#element_selector要素セレクターテキストコントロールのviewPathを連結したものです
#element_position要素の位置テキストコントロールの位置情報です。コントロールにposition属性がある場合にのみ送信されます
#element_content要素の内容テキストコントロール上の内容
  • APPクラッシュイベント(ta_app_crash)のプリセットプロパティ
プロパティ名画面表示名プロパティタイプ説明
#app_crashed_reason例外情報テキスト文字列型。クラッシュ時のスタックトレースを記録します

7. オプションのプラグイン​

ヒント

このプラグインは、コントロールクリックイベントとFragmentのページ閲覧イベントを有効にする必要がある場合にのみ統合します。

ヒント

バージョン2.1.0から、Gradle8.0に対応しています。

Android分析SDKのバージョンプラグインのバージョン
[oldest - 3.0.0)1.2.0
[3.0.0 - 3.1.0]2.1.0
(3.1.0 - latest]2.2.0
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'cn.thinkingdata.android:android-gradle-plugin2:2.2.0'
}
}

プロジェクトのbuild.gradleファイルで、プラグイン関連のパラメータを設定できます

apply plugin: 'cn.thinkingdata.android'
android {

}
ThinkingAnalytics {
debug = true
exclude = []
sdk{
disableAndroidID = false
}
}

パラメーターの詳細:

  • debug:コンパイルログを出力するかどうか。trueでコンパイルログを出力します。デフォルトはfalseです。
  • exclude:特定のパスにあるクラスをスキャン対象から除外します。exclude = ['cn.thinkingdata.android','android.support']のように設定できます。
  • useInclude、include:特定のパスにあるクラスのみをスキャンしたい場合は、useInclude = true、include= ['cn.thinkingdata.android','android.support']のように設定できます。
  • disableAndroidID:システムAPIを呼び出してAndroidIDを取得することを無効にするかどうか。プラグインV2.1.0以降、disableAndroidID = trueを設定することで構成できます。

8. カスタムプロパティの設定​

TDAnalytics.enableAutoTrack(int autoTrackEventType, JSONObject properties)を呼び出して、自動収集機能を有効にすると同時に、カスタムプロパティを設定できます

JSONObject properties = new JSONObject();
try {
properties.put("auto_self_define_key", "auto_self_define_value");
} catch (Exception e) {
e.printStackTrace();
}
TDAnalytics.enableAutoTrack(typeList, properties);

9. 自動収集イベントのコールバック設定​

コールバックを設定すると、有効にした自動収集イベントが発生したときに、現在のイベントのイベントタイプと、そのイベントに含まれるイベントプロパティを取得できます。また、戻り値を設定することで、そのイベントに追加で送信するプロパティを加えることができます。

TDAnalytics.enableAutoTrack(TDAnalytics.TDAutoTrackEventType.APP_END | TDAnalytics.TDAutoTrackEventType.APP_START, new TDAnalytics.TDAutoTrackEventHandler() {
@Override
public JSONObject getPropertiesWithEventType(int eventType, JSONObject properties) {
try {
return new JSONObject("{\"keykey\":\"value1111\"}");
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
});
このページは役に立ちましたか?