目录
此内容是否有帮助?

# Android SDK 自動収集ガイド

# 1、自動収集の紹介

TA システムは、データ収集を自動化するインターフェースを提供し、ビジネス要件に応じて自動収集が必要なデータを選択することができます。

現在サポートしている自動収集イベントの種類は次のとおりです。

  1. APP インストール、APP インストールログの記録
  2. APP 起動、バックグラウンドから起こす
  3. APP 終了、バックグラウンドへの移動、起動時間の収集
  4. ユーザーの APP 内のページビュー(Activity
  5. ユーザーの APP 内のコントロールクリック
  6. APP クラッシュ情報の記録

次に、各データの収集メソッドを詳しく紹介します。

# 2、自動収集の有効化

enableAutoTrackを呼び出して、自動収集機能を開きます:

List<ThinkingAnalyticsSDK.AutoTrackEventType> eventTypeList = new ArrayList<>();

//APPインストールイベント
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_INSTALL);

//APP起動イベント
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_START);

//APP終了イベント
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_END);

//APPページビューイベント
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_VIEW_SCREEN);

//APPコントロールクリックイベント
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_CLICK);

//APPクラッシュイベント
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_CRASH);

//自動収集有効化イベント
ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).enableAutoTrack(eventTypeList);

業務要件に応じて、自動収集のイベントを有効化します。

TIP

コントロールクリックイベントまたはフラグメントショーイベントを収集するには、自動収集プラグインを使用します。

パブリックイベントプロパティを設定する、またはカスタムゲスト ID を設定するには、自動収集を有効にする前に setSuperProperties()か identify()を呼び出します。

コードサンプル:

// 初期化 SDK
ThinkingAnalyticsSDK.sharedInstance(this, "TA_APP_ID","TA_SERVER_URL");

// ゲスト ID設定
ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).identify("123456789ABCabc");

// パブリックイベント設定
try {
    JSONObject superProperties = new JSONObject();
    superProperties.put("Channel","B1");
    ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).setSuperProperties(superProperties);
} catch (JSONException e) {
    e.printStackTrace();
}

//パブリックイベント設定後,自动采集を再開
List<ThinkingAnalyticsSDK.AutoTrackEventType> eventTypeList = new ArrayList<>();
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_INSTALL);
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_START);
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_END);
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_VIEW_SCREEN);
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_CLICK);
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_CRASH);

ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).enableAutoTrack(eventTypeList);

# 3、自動収集イベントの詳細

# 3.1 APP インストールイベント

APP インストールイベントは APP の実際のインストールを記録し、APP 起動時にアップロードされます。イベントの時間トリガーは APP のインストール後の最初の起動時間です。APP のアップグレードはインストールイベントを起こさないが、APP を削除して再インストールする時はインストールイベントがアップロードされます。

  • イベント名: ta_app_install

# 3.2 APP 起動イベント

APP 起動イベントは、ユーザーが APP を起動したとき、またはバックグラウンドから APP を起こしたときに発生します。

  • イベント名: ta_app_start
  • プリセットプロパティ:#resume_from_background、ブール型、APP はユーザーが起動したかバックグラウンドから起こしたかを表します。値 true はバックグラウンドから起こしたことを表し、false は直接起動したことを表します。

# 3.3 APP 終了イベント

APP 終了イベントは、ユーザーが APP を閉じたとき、または APP をバックグラウンドに移動したときに発生します。

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

# 3.4 APP ページビューイベント

APP ページビューイベントは、ユーザーがページ(Activity)を閲覧するときに発生します。

  • イベント名: ta_app_view
  • プリセットプロパティ:
  • #screen_nameは文字列型で、Activityのパッケージ名、クラス名です。
  • #titleは文字列型で、Activityのタイトルで、値はActivitytitleプロパティ値です。

ページビューイベントに他のプロパティを追加して分析価値を拡張することができます。以下は、ページビューイベントのプロパティをカスタマイズするメソッドを紹介します。

# 3.4.1 Fragment のページビューイベントの自動収集の有効化

android.support.v4.app.FragmentFragmentに対して、次の方法でページビューイベントを自動的に収集することができます。

SDK の初期化が完了した後、次のメソッドで Fragment の自動取得機能を有効化します。

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

android.app.FragmentFragmentに対して、次のメソッドでページビューイベントを呼び出すことができます。

ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).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の URLSchema として使用し、ページビューイベントが発生する時に、プリセットプロパティ#urlを追加し、値は現在のページの URLSchema になります。同時に SDK は前のページにジャンプする URLSchema を取得できれば、プリセットプロパティ#referrerにフォワードアドレスとして追加します。

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

2.FragmentのページビューイベントにはFragmentクラスに注釈@ThinkingDataFragmentTitleを追加することができます。

@ThinkingDataFragmentTitle(title = "myFragment")
public class ListViewFragment extends BaseFragment {
  // your fragment implementations
}

FragmentScreenAutoTrackerインターフェイスを実装し、カスタムプロパティに#titleプロパティを追加します。

  @Override
  public JSONObject getTrackProperties() {
      try {
          JSONObject properties = new JSONObject();
          properties.put("#title", "RecyclerViewFragment");
          return properties;
      } catch (JSONException e) {
          // ignore
      }
      return null;
  }

# 3.5 APP コントロールクリックイベント

APP コントロールクリックイベントは、ユーザーがコントロールをクリックしたときに発生します。

  • イベント名: ta_app_click
  • プリセットプロパティ:
  • #screen_nameは文字列型で、コントロールが属するActivityのパッケージ名、クラス名です。
  • #titleは文字列型で、コントロールが属するActivityのタイトルであり、値はActivitytitleプロパティ値です。
  • #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プロパティを上書きします。

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はコントロール ID を設定する必要がある view です。パラメーターviewIDは設定されたコントロール ID です。コントロールのクリックイベントをアップロードするとき#element_idの値は受信値になります。

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

次のメソッドで、あるコントロールクリックイベントにカスタムプロパティを追加することができます。

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

パラメーターviewはコントロール ID を設定する必要がある view です。パラメーターproperties(JSONObject型)は設定されたコントロール ID です。コントロールのクリックイベントをアップロードするとき、これらのプロパティが追加されます。

また、ExpandableListViewListViewGridViewは、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;
}
  • ListViewGridViewはインターフェイスThinkingAdapterViewItemTrackPropertiesを実装する必要があります。
public interface ThinkingAdapterViewItemTrackProperties {
    /**
     * groupPositionのitemクリック時のプロパティの追加
     * @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 の注釈によるコントロールクリックイベントのアップロード

android: onclickをコントロール(view)とし、クリックイベントを追加する呼び出しメソッドを使用する場合、呼び出しメソッドに注釈@ThinkingDataTrackViewOnClickを追加することができます。この呼び出しメソッドが実行された時に SDK がコントロールクリックイベントをアップロードします。

@ThinkingDataTrackViewOnClick
public void buttonOnClick(View v){}

buttonOnClickが呼び出されると、コントロールクリックイベントをアップロードします。

# 3.6 APP クラッシュイベント

APP は未捕獲エラーが発生すると、APP クラッシュイベントをアップロードします。

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

# 4、自動收集事件の無視

次のメソッドで、ページまたはコントロールの自動収集イベントを無視します。

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

一部のページ(Activity)で、自動収集イベント(ページビューやコントロールクリックイベントを含む)を転送したくない場合は、次のメソッドで無視することができます。

//单一ページの無視
ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).ignoreAutoTrackActivity(MainActivity.class);

//複数ページの無視
List<Class<?>> classList = new ArrayList<>();
classList.add(MainActivity.class);
ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).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 コントロールクリックイベントの無視

ある種類のコントロールクリックイベントを無視するには、次のメソッドを使用します。

ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).ignoreViewType(ignoredClass);
  • ignoredClassDialogCheckboxなど無視したいコントロールの種類です。

# 4.3 要素のクリックイベントの無視

ある要素(View)のクリックイベントを無視するには、次のメソッドを使用します。

ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).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""paramBoolean": trueです。

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

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

  • APP 起動イベント(ta_app_start)のプリセットプロパティ
プロパティ

日本語
説明
#resume_from_background
バックグラウンドから起こすか
APPが起動されたかバックグラウンドから起こされたかを示す。trueはバックグラウンドから起こす。falseは直接に起動する。
  • APP クローズイベント(ta_app_end)のプリセットプロパティ
プロパティ

日本語
説明
#duration
イベントの長さ
アプリの起動から終了までの時間を秒単位で表す。
  • 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、自動収集機能プラグインの統合(任意)

TIP

コントロールクリックイベントとフラグメントページビューイベントをスタートしたい時のみ、プラグインを統合する必要があります。

apply plugin: 'cn.thinkingdata.android'

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

2.0.0 より前のバージョンの SDK を使用している場合は、古いバージョンのプラグインを使用してください:

apply plugin: 'com.thinkingdata.analytics.android'

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.thinking.analyselibrary.plugin:android-gradle-plugin:1.2.0'
    }
}

lambda 式をサポートしたい、また編集中のエラーを解決したい場合は、最新バージョンのプラグインを使用してください。統合したい sdk のバージョンを 2.7.6 以下になってはなりません。

apply plugin: 'cn.thinkingdata.android'

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

項目 build.gradle ブックにプラグイン関連のパラメーターを構成します。

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

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

編集ログを開きたい場合は、debug=true を設定し、false をデフォルトにします。

jar 内のクラスのスキャンを無効にしたい場合は、disableJar=true を設定し、false をデフォルトにします。

あるパスのクラスをスキャンしたくない場合は、exclude=['cn.thinkingdata.android','android.support']を設定します。

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

`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);

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

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;
        }
    }
});