目录
此内容是否有帮助?

# Android SDK 自動収集ガイド

Android SDK はインストール、起動、クローズなどのイベントの自動収集が対応しております。

# 自動収集の紹介

TE システムで自動収集できる呼び出しは以下となります。

実際業務に応じてご利用ください。

  1. インストールイベント(Install):APP のインストール行動を記録
  2. 起動イベント(Open APP):APP を起動、またはバックグラウンドから APP を起動
  3. クローズイベント(Close APP):APP をクローズまたは APP がバックグラウンドに収める。同時に起動の時間経過を収集
  4. 閲覧イベント(View Page):APP 内でページビュー(Activity)を閲覧
  5. クリックイベント(Click):APP 内のコントローラ(view)をクリック
  6. クラッシュイベント(Crash):APP がクラッシュされた際の情報収集

これからそれぞれデータの収集メソッドについて紹介します。

# 自動収集を有効化

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

List<ThinkingAnalyticsSDK.AutoTrackEventType> eventTypeList = new ArrayList<>();
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_INSTALL); //APP install event
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_START); //APP enable event
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_END); //APP disable event
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_VIEW_SCREEN); //APP view screen event
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_CLICK); //APP click view event
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_CRASH); //APP crash event
//enable autotrack event
ThinkingAnalyticsSDK.sharedInstance(this, TE_APP_ID).enableAutoTrack(eventTypeList);

::: Tips

コンローラーのクリックイベントもしくは Fragment の閲覧イベントを収集する場合は、自動収集プラグインを実装する必要があります。

:::

# 詳細紹介

# 3.1 インストールイベント(Install)

APP のインストールイベントを記録され、APP が起動時に送信します。イベントのトリガー時間は APP インストール後の初回起動の時間となります。APP のバージョンアップはインストールイベントをカウントされませんが、削除したあとでの再インストールはカウントされます。

  • イベント名:ta_app_install

# 3.2 起動イベント(Open APP)

APP 起動イベントはユーザーが APP を起動する時、またはバックグラウンドから APP を起動する時に収集されます。

  • イベント名:ta_app_start
  • プリセットプロパティ:#resume_from_background、Boolean 型で、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 クローズイベント(Close APP)

ユーザーが APP をクローズする時、または APP をバックグラウンドに収める時に収集されます。

  • イベント名:ta_app_end
  • プリセットプロパティ:#duration、数値型で、APP 起動の経過時間を統計されます。(単位:秒)

# 3.4 閲覧イベント(View Page)

APP でページ閲覧(Activity)をする時に収集されます。

  • イベント名:ta_app_view
  • プリセットプロパティ:

#screen_name、文字列型、Activityのパッケージ名とカテゴリ名

#title、文字列型、Activityのタイトル、Activitytitleプロパティ値を取得

  閲覧イベントの中では他のプロパティを拡張して分析価値を高めることができます。以下は拡張方法となります。

# 3.4.1 自動収集で Fragment ページ閲覧イベントを有効

android.support.v4.app.Fragmentの Fragment、以下の方法でページ閲覧イベントを収集できます。

SDK 初期化完了後、以下の方法で Fragment の自動取集機能を呼び出しできます。

ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).trackFragmentAppViewScreen();

android.app.Fragmentの Fragment は、以下の方法でできます。

ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).trackViewScreen(targetFragment);
  • targetFragmentは閲覧イベント収集必要の Fragment に変更可能です。

# 3.4.2 カスタムページ閲覧イベントのプロパティ

Activityのページ閲覧イベントに対して、ScreenAutoTrackerの呼び出しを通してプロパティを追加することができます。以下二つの方法で、ページ閲覧イベントでページ 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というプリセットプロパティを追加で入れることができます。その同時に 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 クリックイベント(Click)

APP のクリックイベントはコントローラ(view)をクリックする時に収集されます。

  • イベント名:ta_app_click
  • プリセットロプパティ:

#screen_name文字列型、view が属しているActivityのパッケージ名&カテゴリ名

#title文字列型、view が属しているActivityのタイトルで、値はActivitytitle

#element_content文字列型、view の内容

#element_type文字列型、view のタイプ

#element_id文字列型、view の ID、デフォルトでandroid:id

#element_position文字列型、view にposition存在する時に収集

#element_selector文字列型、view のviewPathのスプライシング

ページ上の View のクリックイベントに対して、以下多種の方法でその他のプロパティを設定で、分析価値を高めることが可能です。

# 3.5.1 ViewID を定義

viewID はデフォルトでandroid:idを使用し、もしそのプロパティは取得できない場合、もしくはカスタムで ID を設定したい場合は、以下の方法で#element_idを書き換えられます。

ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).setViewID(view,viewID);

Dialogに対しては、以下の方法:

//android.app.Dialog
ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).setViewID(view,viewID);

もしくは

//android.support.v7.app.AlertDialog
ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).setViewID(view,viewID);

パラメータのviewは viewID の view で、パラメータviewIDの ID、#element_idはクリックイベントを送信する時使用する値となります。

# 3.5.2 クリックイベントのプロパティを定義

以下の方法でコントローラ(view)のクリックイベントにカスタムプロパティを追加可能です。

ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).setViewProperties(view,properties);

パラメータのviewはカスタムプロパティの view、パラメータpropertiesJSONObjectタイプで、カスタムプロパティとして、クリックイベント送信時に追加されます。

ExpandableListViewListViewGridViewは Adapter を通して特定の item をクリック時のカスタムプロパティを追加することも可能です。

  • ExpandableListViewThinkingExpandableListViewItemTrackPropertiesの実現は呼び出しが必要
public interface ThinkingExpandableListViewItemTrackProperties {
    /**
     * Add properties when clicking items at groupPosition and childPosition
     * @param groupPosition
     * @param childPosition
     * @return
     * @throws JSONException
     */
    JSONObject getThinkingChildItemTrackProperties(int groupPosition, int childPosition) throws JSONException;

    /**
     * Add properties when clicking items at groupPosition
     * @param groupPosition
     * @return
     * @throws JSONException
     */
    JSONObject getThinkingGroupItemTrackProperties(int groupPosition) throws JSONException;
}
  • ListViewGridViewThinkingAdapterViewItemTrackPropertiesインターフェースが必須
public interface ThinkingAdapterViewItemTrackProperties {
    /**
     * Add properties when clicking items in the position
     * @param position
     * @return
     * @throws JSONException
     */
    JSONObject getThinkingItemTrackProperties(int position) throws JSONException;
}

# 3.5.3 AlertDialog のクリックイベントにページの Activity 情報を追加

AlertDialogに対して(android.app.AlertDialogandroid.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 の注釈で view のクリックイベントを送信

もしandroid:onclickの view を使用されている場合は、クリックイベントの呼び出し方法として、@ThinkingDataTrackViewOnClickの注釈で付け加えることで実現可能です。

@ThinkingDataTrackViewOnClick
public void buttonOnClick(View v){}

もしbuttonOnClickが呼び出しされた場合は、クリックイベントとして送信されます。

# 3.6 クラッシュイベント(Crash)

APP が予想外の異常がある際に、クラッシュイベントを収集されます。

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

# 自動収取イベントを無視

以下の方法で、特定のページまたは view の自動収集イベントを無視することができます。

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

特定ページのActivity 自動収集イベントで収集したくない場合(ページ閲覧と view クリック)以下の方法で実現可能です。

//ignore a single screen
ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).ignoreAutoTrackActivity(MainActivity.class);
//ignore multiple screens
List<Class<?>> classList = new ArrayList<>();
classList.add(MainActivity.class);
ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).ignoreAutoTrackActivities(classList);

ActivityもしくはFragmentの前に@ThinkingDataIgnoreTrackAppViewScreen注釈を付け加えることで、特定のActivityもしくはFragmentのページ閲覧イベントを無視することも可能です。

//ignore the view screen event of TestActivity
@ThinkingDataIgnoreTrackAppViewScreen
public class TestActivity extends AppCompatActivity {
    ...
}

Activityの前に@ThinkingDataIgnoreTrackAppViewScreenAndAppClick注釈を付け加えることで、Activityの特定ページ閲覧イベントとイベントの view クリックイベントを無視することができます。

//ignore the view screen event ofTestActivity as well as the view click event under the screen
@ThinkingDataIgnoreTrackAppViewScreenAndAppClick
public class TestActivity extends AppCompatActivity {
    ...
}

# 4.2 特定のタイプ view のクリックイベントを無視

特定のタイプ view のクリックイベントを無視したい場合は、以下の方法で実現可能です。

ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).ignoreViewType(ignoredClass);
  • ignoredClassは無視したい view のタイプDialogCheckboxなど

# 4.3 特定のエレメント view のクリックイベントを無視

特定のエレメント view のクリックイベントを無視したい場合は、以下の方法で実現可能です。

ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).ignoreView(targetView);
  • targetView は無視する View

# 注釈でイベントをクイック設定

特定の方法の呼び出し回数を監視したい場合、もしくは特定の方法で呼び出したあとですぐにイベントを送信したい場合は、@ThinkingDataTrackEvent注釈を利用してクイック設定可能です。プロパティにはシンプルイベントのみ対応しています。

//use annotation
@ThinkingDataTrackEvent(eventName = "event_name", properties = "{\"paramString\":\"value\",\"paramNumber\":123,\"paramBoolean\":true}")
public void fun(){}

もしその時にfunが呼び出された場合は、以下のイベントを自動で送信されます。

イベント名:event_name、プロパティ"paramString":"value""paramNumber":123"paramBoolean":true

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

以下のプリセットプロパティは、自動収集イベントの中で特有のプリセットプロパティとなります。

  • APP 起動イベント(ta_app_start)のプリセットプロパティ
プロパティ名 名称 タイプ 説明
#resume_from_background
バックグラウンドから再開かどうか
文字列
APPの起動は直接起動なのか、バックグラウンドから再開なのか。trueはバックグラウンドから再開で、falseは直接起動となります。
  • APP クローズイベント(ta_app_end)のプリセットプロパティ
プロパティ名 名称 タイプ 説明
#duration
イベント時間経過
数値
APP起動からの時間経過(起動からクローズ)、単位は秒
  • APP 閲覧ページイベント(ta_app_view)のプリセットプロパティ
プロパティ名 名称 タイプ 説明
#title
ページタイトル
文字列
viewが属している
Activity
のタイトルで、
Activity

title
プロパティで値を付与されます
#screen_name
ページ名称
文字列
viewが属している
Activity
のパッケージ名、カテゴリ名
#url
ページURL
文字列
現在ページのURL、
getScreenUrl
を呼び出してURLの設定を行う必要があります。
#referrer
リファラー
文字列
本ページに移動する前のURLで、
getScreenUrl
を呼び出して設定が必要です。
  • APP view クリックイベント(ta_app_click)のプリセットプロパティ
プロパティ名 名称 タイプ 説明
#title
ページタイトル
文字列
viewが属している
Activity
のタイトルで、
Activity

title
プロパティで値を付与されます
#screen_name
ページ名称
文字列
viewが属している
Activity
のパッケージ名、カテゴリ名
#element_id
エレメント ID
文字列
viewのID、デフォルトで
android:id
を使用、
setViewID
を呼び出しして設定可能です。
#element_type
エレメントタイプ
文字列
viewのタイプ
#element_selector
エレメントセレクター
文字列
viewの
viewPath
のスプライシング
#element_position
エレメント位置
文字列
viewの位置情報、viewが
position
プロパティが存在する時に送信されます
#element_content
エレメント内容
文字列
view上の内容
  • APP のクラッシュイベント(ta_app_crash)のプリセットプロパティ
プロパティ名 名称 タイプ 説明
#app_crashed_reason
異常情報
文字列
クラッシュ発生時のスタックトレースを記録されます

# 自動収集機能プラグインの統合(任意)

::: Tips

view クリックイベントと Fragment ページ閲覧イベントが有効した上で、オプションプラグインが実装可能になります。

:::

apply plugin: 'cn.thinkingdata.android'

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'cn.thinkingdata.android:android-gradle-plugin2:1.0.5'
    }
}

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

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

}
ThinkingAnalytics {
    debug = true
    disableJar = true
    exclude = []
    excludeSensitive = []
}

コンパイルログを開きたい場合は debug = true を設定してください。(デフォルトは false)

jar 内のクラスのスキャンを禁止したい場合は disableJar = true を設定してください。(デフォルトは false)

特定のパスの下にあるクラスをスキャンしたくない場合は exclude = ['cn.thinkingdata.android','android.support']を設定してください。

V1.0.5 以降、機密属性 (AndroidID など) を構成するためのコード分離ができます。excludeSensitive = ['AndroidID']をしてください。(SDKV2.8.1 以上対応)

# 自動収集イベントのカスタムプロパティ設定

enableAutoTrack(List<ThinkingAnalyticsSDK.AutoTrackEventType>, JSONObject)を呼び出して、自動収集機能を有効にし、カスタムプロパティを同時に設定可能です。

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

setAutoTrackProperties(List<ThinkingAnalyticsSDK.AutoTrackEventType>, JSONObject)を呼び出して、設定またはカスタムプロパティを更新できます。

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

# 自動収集イベントのコールバックを設定

V2.7.5以降では、コールバックを設定することで、有効にした自動収集イベントが発生した際に現在のイベントのイベントタイプとイベントプロパティを取得でき、リスポンス値を設定することでイベントに付加値を追加で送信できます。

List<ThinkingAnalyticsSDK.AutoTrackEventType> typeList = new ArrayList<>();
typeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_START);
typeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_INSTALL);
typeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_END);

mInstance.enableAutoTrack(typeList, new ThinkingAnalyticsSDK.AutoTrackEventListener() {
    @Override
    public JSONObject eventCallback(ThinkingAnalyticsSDK.AutoTrackEventType eventType, JSONObject properties) {
        try {
            return new JSONObject("{\"keykey\":\"value1111\"}");
        } catch (JSONException e) {
            e.printStackTrace();
            return null;
        }
    }
});