自動収集
1. 自動収集の紹介
AEシステムはデータを自動的に収集するためのインターフェースを提供しており、業務要件に応じて、自動収集するデータを選択できます。
現在対応している自動収集データは次のとおりです:
- APPのインストール:APPがインストールされたことを記録します
- APPの起動:APPを開く操作と、バックグラウンドからの復帰を含みます
- APPの終了:APPを閉じる操作と、バックグラウンドへの移行を含みます。同時に、起動していた時間も収集します
- ユーザーがAPP内でページ(ネイティブページ)を閲覧した行動
- ユーザーがAPP内でコントロールをクリックした行動
- APPがクラッシュしたときに、クラッシュ情報を記録します
以下では、各データの収集方法について詳しく説明します
2. 自動収集を有効にする
enableAutoTrack:を呼び出して、自動収集機能を有効にできます:
[TDAnalytics enableAutoTrack:
TDAutoTrackEventTypeAppStart |//APP起動イベント
TDAutoTrackEventTypeAppInstall |//APPインストールイベント
TDAutoTrackEventTypeAppEnd |//APP終了イベント
TDAutoTrackEventTypeAppViewScreen |//APPページ閲覧イベント
TDAutoTrackEventTypeAppClick |//APPコントロールクリックイベント
TDAutoTrackEventTypeAppViewCrash];//APPクラッシュイベント
3. 自動収集イベントの詳細
3.1 APPインストールイベント
APPインストールイベントは、APPの実際のインストールを記録するもので、APPの起動時に送信されます。イベントのトリガー時間は、APPのインストール後に初めて起動した時間です。APPのアップグレードではインストールイベントはトリガーされませんが、削除して再インストールした場合はインストールイベントが送信されます。
- イベント名:ta_app_install
3.2 APP起動イベント
APP起動イベントは、ユーザーがAPPを開いたとき、またはバックグラウンドからAPPを復帰させたときにトリガーされます。イベントの詳細は次のとおりです:
- イベント名:ta_app_start。通常のAPP起動フローでこのイベントがトリガーされます。
- プリセットプロパティ:
#resume_from_background、ブール型。APPがユーザーによって開かれたのか、バックグラウンドから復帰したのかを示します。値がtrueの場合はバックグラウンドからの復帰、falseの場合は直接開かれたことを示します。 - イベント名:ta_app_bg_start。APPがバックグラウンドで起動されたときに、このイベントがトリガーされます。このイベントはデフォルトでは収集されないため、初期化時に設定項目を有効にする必要があります:
TDConfig *config = [[TDConfig alloc] init];config.appid = appId;config.serverUrl = serverUrl;// バックグラウンドでのイベント収集を許可config.trackRelaunchedInBackgroundEvents = YES;[TDAnalytics startAnalyticsWithConfig:config];[TDAnalytics enableAutoTrack:TDAutoTrackEventTypeAll];
3.3 APP終了イベント
APP終了イベントは、ユーザーがAPPを閉じたとき、またはAPPをバックグラウンドに移したときにトリガーされます。イベントの詳細は次のとおりです:
- イベント名:ta_app_end
- プリセットプロパティ:
#duration、数値型。今回のAPPアクセス(起動から終了まで)の時間を示し、単位は秒です。
3.4 APPページ閲覧イベント
APPページ閲覧イベントは、ユーザーがページ(View Controller)を切り替えたときにトリガーされます。イベントの詳細は次のとおりです:
- イベント名:ta_app_view
- プリセットプロパティ:
#screen_name、文字列型。View Controllerのクラス名です#title、文字列型。View Controllerのタイトルで、controller.navigationItem.title属性の値を取ります
ページ閲覧イベントには、分析の価値を広げるために他のプロパティを追加できます。以下は、ページ閲覧イベントのプロパティをカスタマイズする方法です:
3.4.1 ページ閲覧イベントのプロパティのカスタマイズ
UIViewControllerを継承したView Controllerについては、Protocol<TDScreenAutoTracker>を実装することで、プロパティとページのURL情報を設定できます。SDKはgetTrackPropertiesの戻り値を、そのView ControllerのAPPページ閲覧イベントに自動的に追加します。また、getScreenUrlの戻り値はそのページのURL Schemaとして使用されます。そのページの閲覧イベントがトリガーされると、プリセットプロパティ#urlが追加され、その値は現在のページのURL Schemaになります。同時に、SDKは遷移前のページのURL Schemaを取得し、取得できた場合はプリセットプロパティ#referrerに参照元アドレスとして追加します。
@interface MYController : UITableViewController<TDScreenAutoTracker>
@end
@implementation MYController
//すべてのAPPIDインスタンスに対して設定
- (NSDictionary *)getTrackProperties {
return @{@"PageName" : @"商品詳細ページ", @"ProductId" : @12345};
}
- (NSString *)getScreenUrl {
return @"APP://test";
}
/** 複数のAPPIDインスタンスに個別に設定
* - (NSDictionary *)getTrackPropertiesWithAppid{
* return @{@"appid1" : @{@"testTrackProperties" : @"テストページ"},
* @"appid2" : @{@"testTrackProperties2" : @"テストページ2"},
* };
* }
* -(NSDictionary *)getScreenUrlWithAppid {
* return @{@"appid1" : @"APP://test1",
* @"appid2" : @"APP://test2",
* };
* }
*/
@end
関連するプリセットプロパティ:
#url、文字列型。閲覧したページのURLを表します#referrer、文字列型。ページ遷移前のページのURLを表します
3.5 APPコントロールクリックイベント
APPのコントロールクリックイベントは、ユーザーがコントロールをクリックしたときにトリガーされます
- イベント名:ta_app_click
- プリセットプロパティ:
#screen_name、文字列型。コントロールが属するView Controllerのクラス名です#element_content、文字列型。コントロールの内容です#element_type、文字列型。コントロールの種類です#element_position、文字列型。コントロールのタイプがUITableViewまたはUICollectionViewの場合にのみ存在し、コントロールがクリックされた位置を表します。値はセクション番号(Section):行番号(Row)です
ページ上のViewのクリックイベントについては、分析の価値を広げるために、次のような複数の方法でプロパティを追加設定できます:
3.5.1 コントロール要素IDの設定
ページ上の要素(View)に要素IDを設定して、意味の異なる要素を区別できます。要素IDは次の方法で設定できます:
//すべてのAPPIDインスタンスに対して設定
self.table1.thinkingAnalyticsViewID = @"testtable1";
// 複数のAPPIDインスタンスに個別に設定
self.table1.thinkingAnalyticsViewIDWithAppid = @{ @"app1" : @"testtableID2",
@"app2" : @"testtableID3" };
この場合、table1のクリックイベントにプリセットプロパティ#element_idが追加され、その値はここで渡した値になります
- 関連するプリセットプロパティ:
#element_id、文字列型。その要素のカスタムIDを表します
3.5.2 コントロールクリックイベントのプロパティのカスタマイズ
ほとんどのコントロールでは、thinkingAnalyticsViewPropertiesを使用してカスタムプロパティを直接設定できます:
//すべてのAPPIDインスタンスに対して設定
self.table1.thinkingAnalyticsViewProperties = @{@"key1":@"value1"};
// 複数のAPPIDインスタンスに個別に設定
self.table1.thinkingAnalyticsViewPropertiesWithAppid = @{@"app1":@{@"tablekey":@"tablevalue"},
@"app2":@{@"tablekey2":@"tablevalue2"}
};
3.5.3 UITableViewとUICollectionViewのコントロールクリックイベントのプロパティ
UITableViewとUICollectionViewについては、Protocol<TDUIViewAutoTrackDelegate>を実装してカスタムプロパティを設定する必要があります:
1. まず、View ControllerクラスでProtocol<TDUIViewAutoTrackDelegate>を実装します
2. 次に、クラス内でデリゲートを設定します。viewDidLoadメソッドで設定することをお勧めします
self.table1.thinkingAnalyticsDelegate = self;
table1は、カスタムプロパティを設定するViewに置き換えてください
3. その後、View Controllerのタイプに応じてメソッドを実装します
UITableViewで実装する必要があるメソッドは次のとおりです
//すべてのAPPIDインスタンスに対して設定し、UITableViewのカスタムプロパティを設定
-(NSDictionary *) thinkingAnalytics_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath
{
return @{@"testProperty":@"test"};
}
/** 複数のAPPIDインスタンスに個別に設定
* -(NSDictionary *) thinkingAnalyticsWithAppid_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath {
* return @{@"app1":@{@"autoPro":@"tablevalue"},
* @"app2":@{@"autoPro2":@"tablevalue2"}
* };
* }
*/
UICollectionViewで実装する必要があるメソッドは次のとおりです
//すべてのAPPIDインスタンスに対して設定し、UICollectionViewのカスタムプロパティを設定
-(NSDictionary *) thinkingAnalytics_collectionView:(UICollectionView *)collectionView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath;
{
return @{@"testProperty":@"test"};
}
/** 複数のAPPIDインスタンスに個別に設定
* - (NSDictionary *)thinkingAnalyticsWithAppid_collectionView:(UICollectionView *)collectionView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath {
* return @{@"app1":@{@"autoProCOLL":@"tablevalueCOLL"},
* @"app2":@{@"autoProCOLL2":@"tablevalueCOLL2"}
* };
* }
*/
4. 最後に、クラスのviewWillDisappearメソッドでthinkingAnalyticsDelegateをnilに設定します
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
self.table1.thinkingAnalyticsDelegate = nil;
}
table1は、カスタムプロパティを設定するViewに置き換えてください。デリゲートを設定したときのViewと対応させます
3.6 APPクラッシュイベント
APPで捕捉されない例外が発生すると、APPクラッシュイベントが送信されます
- イベント名:ta_app_crash
- プリセットプロパティ:
#app_crashed_reason、文字列型。クラッシュ時のスタックトレースを記録します
4. 自動収集イベントの無視
次の方法で、特定のページまたはコントロールの自動収集イベントを無視できます
4.1 特定のページの自動収集イベントを無視する
特定のページ(View Controller)で自動収集イベント(ページ閲覧イベントとコントロールクリックイベントを含む)を送信したくない場合は、次の方法で無視できます:
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:@"IgnoredViewController"];
// 特定のページの自動収集イベントを無視
[TDAnalytics ignoreAutoTrackViewControllers:array];
4.2 特定の種類のコントロールのクリックイベントを無視する
特定の種類のコントロールのクリックイベントを無視する必要がある場合は、次の方法で無視できます
// 特定のタイプのすべてのコントロールを無視
[TDAnalytics ignoreViewType:[IgnoredClass class]];
IgnoredClassは無視するコントロールのタイプです
4.3 特定の要素(View)のクリックイベントを無視する
特定の要素(View)のクリックイベントを無視したい場合は、次の方法で無視できます
// すべてのAPPIDインスタンスに対して設定
self.table1.thinkingAnalyticsIgnoreView = YES;
// 複数のAPPIDインスタンスに個別に設定
// self.table2.thinkingAnalyticsIgnoreViewWithAppid = @{@"appid1" : @YES,@"appid2" : @NO};
table1は、無視するViewに置き換えてください
5. 自動収集イベントのプリセットプロパティ
以下のプリセットプロパティは、各自動収集イベントに固有のプリセットプロパティです
- APP起動イベント(ta_app_start)のプリセットプロパティ
| プロパティ名 | 画面表示名 | プロパティタイプ | 説明 |
|---|---|---|---|
#resume_from_background | バックグラウンドからの復帰かどうか | ブール値 | APPが開かれたのか、バックグラウンドから復帰したのかを示します。値がtrueの場合はバックグラウンドからの復帰、falseの場合は直接開かれたことを示します |
#start_reason | 起動理由 | テキスト | APPの起動理由を表します。valueは文字列型です。現在、deeplink、プッシュ、3dtouchによる起動理由の収集に対応しています。 |
| #background_duration | バックグラウンド滞在時間 | 数値 | 単位は秒です |
- APP終了イベント(ta_app_end)のプリセットプロパティ
| プロパティ名 | 画面表示名 | プロパティタイプ | 説明 |
|---|---|---|---|
| #duration | イベント継続時間 | 数値 | 今回のAPPアクセス(起動から終了まで)の時間を示します。単位は秒です |
- APPページ閲覧イベント(ta_app_view)のプリセットプロパティ
| プロパティ名 | 画面表示名 | プロパティタイプ | 説明 |
|---|---|---|---|
| #title | ページタイトル | テキスト | View Controllerのタイトルで、controller.navigationItem.title属性の値を取ります |
| #screen_name | ページ名 | テキスト | View Controllerのクラス名です |
| #url | ページアドレス | テキスト | 現在のページのアドレスです。getScreenUrlを呼び出してurlを設定する必要があります |
| #referrer | 参照元アドレス | テキスト | 遷移前のページのアドレスです。遷移前のページでgetScreenUrlを呼び出してurlを設定する必要があります |
- APPコントロールクリックイベント(ta_app_click)のプリセットプロパティ
| プロパティ名 | 画面表示名 | プロパティタイプ | 説明 |
|---|---|---|---|
#title | ページタイトル | テキスト | View Controllerのタイトルで、controller.navigationItem.title属性の値を取ります |
| #screen_name | ページ名 | テキスト | View Controllerのクラス名です |
#element_id | 要素ID | テキスト | コントロールのIDです。thinkingAnalyticsViewIDで設定する必要があります |
| #element_type | 要素タイプ | テキスト | コントロールの種類 |
| #element_selector | 要素セレクター | テキスト | コントロールのviewPathを連結したものです |
#element_position | 要素の位置 | テキスト | コントロールの位置情報です。コントロールのタイプがUITableViewまたはUICollectionViewの場合にのみ存在し、コントロールがクリックされた位置を表します。値はセクション番号(Section):行番号(Row)です |
| #element_content | 要素の内容 | テキスト | コントロール上の内容 |
- APPクラッシュイベント(ta_app_crash)のプリセットプロパティ
| プロパティ名 | 画面表示名 | プロパティタイプ | 説明 |
|---|---|---|---|
| #app_crashed_reason | 例外情報 | テキスト | 文字列型。クラッシュ時のスタックトレースを記録します |
6. 自動収集イベントのカスタムプロパティの設定
enableAutoTrack:properties:を呼び出して、自動収集機能を有効にすると同時に、カスタムプロパティを設定できます
// 自動収集のカスタムプロパティ
[TDAnalytics enableAutoTrack:TDAutoTrackEventTypeAll properties:@{@"auto_key1": @"auto_value1"}];
setAutoTrackProperties:properties:を呼び出して、カスタムプロパティを設定または更新することもできます
[TDAnalytics setAutoTrackProperties:TDAutoTrackEventTypeAll properties:@{@"auto_key2": @"auto_value2"}];
7. 自動収集イベントのコールバック
v2.7.4以降、自動収集イベントのコールバックに対応しています。enableAutoTrack:callback:を呼び出して自動収集機能を有効にし、callbackでプロパティを追加・更新できます。
[TDAnalytics enableAutoTrack:TDAutoTrackEventTypeAll callback:^NSDictionary * _Nonnull(TDAutoTrackEventType eventType, NSDictionary * _Nonnull properties) {
if (eventType == TDAutoTrackEventTypeAppStart) {
return @{@"addkey":@"addvalue"};
}
if (eventType == TDAutoTrackEventTypeAppEnd) {
return @{@"updatekey":@"updatevalue"};
}
return @{};
}];
このコールバック内で時間のかかる処理を行わないでください。データが正常にデータベースに保存されなくなるおそれがあります

