自動収集
Android SDKは、インストール、起動、終了などのイベントの自動収集に対応しています。
1. はじめに
AEシステムはデータを自動的に収集するためのインターフェースを提供しており、業務要件に応じて、自動収集するデータを選択できます。
現在対応している自動収集イベントの種類は次のとおりです:
- インストールイベント:APPがインストールされた行動を記録します
- 起動イベント:APPを開く操作と、バックグラウンドからAPPを開く操作を含みます
- 終了イベント:APPを閉じる操作と、Appがバックグラウンドに移行する操作を含みます。同時に、起動していた時間も収集します
- 閲覧イベント:ユーザーがAPP内でページ(
Activity)を閲覧した行動 - クリックイベント:ユーザーがAPP内でコントロールをクリックした行動
- クラッシュイベント:APPがクラッシュしたときに、クラッシュ情報を記録します
以下では、各データの収集方法について詳しく説明します
2. 自動収集を有効にする
enableAutoTrackを呼び出して、自動収集機能を有効にできます:
- Java
- Kotlin
//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);
//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 or TDAnalytics.TDAutoTrackEventType.APP_END
or TDAnalytics.TDAutoTrackEventType.APP_INSTALL or TDAnalytics.TDAutoTrackEventType.APP_VIEW_SCREEN or TDAnalytics.TDAutoTrackEventType.APP_CLICK
or 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の自動収集機能を有効にします
- Java
- Kotlin
TDAnalytics.trackFragmentAppViewScreen();
TDAnalytics.trackFragmentAppViewScreen()
android.app.FragmentのFragmentについては、次の方法でページ閲覧イベントを自分で呼び出すことができます:
- Java
- Kotlin
TDAnalytics.trackViewScreen(targetFragment);
TDAnalytics.trackViewScreen(targetFragment)
targetFragmentは、ページ閲覧イベントを送信する必要があるFragmentに置き換えてください
3.4.2 ページ閲覧イベントのプロパティのカスタマイズ
Activityのページ閲覧イベントについては、ScreenAutoTrackerインターフェースのメソッドを実装することでプロパティを追加できます。次の2つのメソッドにより、ページ閲覧イベントにページのURL情報やその他のカスタムプロパティを追加できます:
- Java
- Kotlin
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;
}
}
class MainActivity : AppCompatActivity(), ScreenAutoTracker {
override fun getScreenUrl(): String {
return "thinkingdata://page/main";
}
override fun getTrackProperties(): JSONObject {
val jsonObject = 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を使用してプロパティを追加する
- Java
- Kotlin
@ThinkingDataFragmentTitle(title = "myFragment")
public class ListViewFragment extends BaseFragment {
// your fragment implementations
}
@ThinkingDataFragmentTitle(title = "myFragment")
class ListViewFragment : BaseFragment() {
// your fragment implementations
}
ScreenAutoTrackerインターフェースを実装する
- Java
- Kotlin
@Override
public JSONObject getTrackProperties() {
try {
JSONObject properties = new JSONObject();
properties.put("#title", "RecyclerViewFragment");
return properties;
} catch (JSONException e) {
// ignore
}
return null;
}
override fun getTrackProperties(): JSONObject {
val jsonObject = JSONObject()
properties.put("#title", "RecyclerViewFragment");
return jsonObject
}
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プロパティを上書きできます
- Java
- Kotlin
TDAnalytics.setViewID(view,viewID);
TDAnalytics.setViewID(view,viewID)
Dialogについては、次の方法を使用できます:
- Java
- Kotlin
//android.app.Dialog
TDAnalytics.setViewID(view,viewID);
//android.app.Dialog
TDAnalytics.setViewID(view,viewID)
または
- Java
- Kotlin
//android.support.v7.app.AlertDialog
TDAnalytics.setViewID(view,viewID);
//android.support.v7.app.AlertDialog
TDAnalytics.setViewID(view,viewID)
パラメータviewはコントロールIDを設定するview、パラメータviewIDは設定するコントロールIDです。そのコントロールのクリックイベントを送信する際、#element_idの値はここで渡した値になります
3.5.2 コントロールクリックイベントのプロパティのカスタマイズ
次の方法で、特定のコントロール(view)のクリックイベントにカスタムプロパティを追加できます:
- Java
- Kotlin
TDAnalytics.setViewProperties(view,properties);
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)で自動収集イベント(ページ閲覧イベントとコントロールクリックイベントを含む)を送信したくない場合は、次の方法で無視できます:
- Java
- Kotlin
//単一ページの無視
TDAnalytics.ignoreAutoTrackActivity(MainActivity.class);
//複数ページの無視
List<Class<?>> classList = new ArrayList<>();
classList.add(MainActivity.class);
TDAnalytics.ignoreAutoTrackActivities(classList);
//単一ページの無視
TDAnalytics.ignoreAutoTrackActivity(MainActivity::class.java)
//複数ページの無視
val classList: MutableList<Class<*>> = ArrayList()
classList.add(MainActivity::class.java)
TDAnalytics.ignoreAutoTrackActivities(classList)
ActivityまたはFragmentの前にアノテーション@ThinkingDataIgnoreTrackAppViewScreenを追加して、特定のActivityまたはFragmentのページ閲覧イベントを無視することもできます
- Java
- Kotlin
//TestActivity のページ閲覧イベントを無視
@ThinkingDataIgnoreTrackAppViewScreen
public class TestActivity extends AppCompatActivity {
...
}
//TestActivity のページ閲覧イベントを無視
@ThinkingDataIgnoreTrackAppViewScreen
class TestActivity : AppCompatActivity() {
...
}
Activityの前にアノテーション@ThinkingDataIgnoreTrackAppViewScreenAndAppClickを追加すると、特定のActivityのページ閲覧イベントと、そのページ内のコントロールクリックイベントを無視できます
- Java
- Kotlin
//TestActivity のページ閲覧イベントと、そのページ内のコントロールクリックイベントを無視
@ThinkingDataIgnoreTrackAppViewScreenAndAppClick
public class TestActivity extends AppCompatActivity {
...
}
//TestActivity のページ閲覧イベントと、そのページ内のコントロールクリックイベントを無視
@ThinkingDataIgnoreTrackAppViewScreenAndAppClick
class TestActivity : AppCompatActivity() {
...
}
4.2 特定の種類のコントロールのクリックイベントを無視する
特定の種類のコントロールのクリックイベントを無視する必要がある場合は、次の方法で無視できます
- Java
- Kotlin
TDAnalytics.ignoreViewType(ignoredClass);
TDAnalytics.ignoreViewType(ignoredClass)
ignoredClassは無視するコントロールの種類です(例:Dialog、Checkboxなど)
4.3 特定の要素(View)のクリックイベントを無視する
特定の要素(View)のクリックイベントを無視したい場合は、次の方法で無視できます
- Java
- Kotlin
TDAnalytics.ignoreView(targetView);
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)を呼び出して、自動収集機能を有効にすると同時に、カスタムプロパティを設定できます
- Java
- Kotlin
JSONObject properties = new JSONObject();
try {
properties.put("auto_self_define_key", "auto_self_define_value");
} catch (Exception e) {
e.printStackTrace();
}
TDAnalytics.enableAutoTrack(typeList, properties);
val properties = JSONObject()
properties.put("auto_self_define_key", "auto_self_define_value")
TDAnalytics.enableAutoTrack(typeList, properties)
9. 自動収集イベントのコールバック設定
コールバックを設定すると、有効にした自動収集イベントが発生したときに、現在のイベントのイベントタイプと、そのイベントに含まれるイベントプロパティを取得できます。また、戻り値を設定することで、そのイベントに追加で送信するプロパティを加えることができます。
- Java
- Kotlin
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;
}
}
});
TDAnalytics.enableAutoTrack(
TDAnalytics.TDAutoTrackEventType.APP_END or TDAnalytics.TDAutoTrackEventType.APP_START,
object : TDAutoTrackEventHandler {
override fun getAutoTrackEventProperties(p0: Int, p1: JSONObject?): JSONObject {
return JSONObject("{\"keykey\":\"value1111\"}");
}
})

