# iOS SDK自動収集ガイド
# 自動収集の紹介
TE システムで自動収集できる呼び出しは以下となります。
実際業務に応じてご利用ください。
- インストールイベント(Install):APPのインストール行動を記録
- 起動イベント(Open APP):APPを起動、またはバックグラウンドからAPPを起動
- クローズイベント(Close APP):APPをクローズまたはAPPがバックグラウンドに収める。同時に起動の時間経過を収集
- 閲覧イベント(View Page):APP内でページビュー(View Controller)を閲覧
- クリックイベント(Click):APP内のコントローラ(view)をクリック
- クラッシュイベント(Crash):APPがクラッシュされた際の情報収集
これからそれぞれデータの収集メソッドについて紹介します。
# 自動収集を有効化
enableAutoTrackを呼び出しして、自動収集機能を有効化できます:
[TDAnalytics enableAutoTrack:
ThinkingAnalyticsEventTypeAppStart | //APP enable event
ThinkingAnalyticsEventTypeAppInstall | // APP install event
ThinkingAnalyticsEventTypeAppEnd | //APP disable event
ThinkingAnalyticsEventTypeAppViewScreen | //APP view screen event
ThinkingAnalyticsEventTypeAppClick | //APP click view event
ThinkingAnalyticsEventTypeAppViewCrash]; //APP crash event
# 自动采集事件详解
# 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は直接起動となります。
# 3.3 クローズイベント(Close APP)
ユーザーがAPPをクローズする時、またはAPPをバックグラウンドに収める時に収集されます。
- イベント名:ta_app_end
- プリセットプロパティ:
#duration、数値型で、APP起動の経過時間を統計されます。(単位:秒)
# 3.4 閲覧イベント(View Page)
APPでページ閲覧(View Controller)をする時に収集されます。
- イベント名:ta_app_view
- プリセットプロパティ:
#screen_name、文字列型、View Controllerのパッケージ名とカテゴリ名
#title、文字列型、View Controllerのタイトル、controller.navigationItem.titleプロパティ値を取得
閲覧イベントの中では他のプロパティを拡張して分析価値を高めることができます。以下は拡張方法となります。
# 3.4.1 ページビューイベントのプロパティをカスタム
UIViewControllerから受け継がれたView Controllerに対しては、Protocolのを利用してプロパティおよびページのURL情報を設定できます。SDKは自動的にgetTrackProperties:の戻し値をView ControllerのAPP閲覧ページイベントに追加されます;一方でgetScreenUrl:の戻し値はそのページのURL Schemaとして、該当ページの閲覧イベントをドリガーされるときに、プリセットプロパティに#urlを追加され、付与する値は当ページのURL Schemaで、同時にSDKがその前のページのURL Schemaを取得し、プリセットプロパティ#referrerに記録します。
@interface MYController : UITableViewController<TDScreenAutoTracker>
@end
@implementation MYController
- (NSDictionary *)getTrackProperties {
return @{@"PageName" : @"ABCD", @"ProductId" : @12345};
}
- (NSString *)getScreenUrl {
return @"APP://test";
/** Multi-Instance, Configure with appid
* - (NSDictionary *)getTrackPropertiesWithAppid{
* return @{@"appid1" : @{@"testTrackProperties" : @"ABCD"},
* @"appid2" : @{@"testTrackProperties2" : @"ABCD"},
* };
* }
* -(NSDictionary *)getScreenUrlWithAppid {
* return @{@"appid1" : @"APP://test1",
* @"appid2" : @"APP://test2",
* };
* }
*/
}
@end
- プリセットプロパティ:
#url,文字列で、閲覧ページのURL#referrer,文字列で、当ページに入る前のページのURL
# 3.5 クリックイベント(Click)
APPのクリックイベントはコントローラをクリックする時に収集されます。
- イベント名:ta_app_click
- プリセットロプパティ:
#screen_name文字列型、viewが属しているView Controllerのカテゴリ名
#element_content文字列型、viewの内容
#element_type文字列型、viewのタイプ
#element_position文字列型、viewのタイプはUITableViewまたはUICollectionViewの際に存在され、viewがクリックされた位置情報となります。(Section):(Row)
ページ上のViewのクリックイベントに対して、以下多種の方法でその他のプロパティを設定で、分析価値を高めることが可能です。
# 3.5.1 ViewのエレメントIDを設定
ページ上のエレメント(View)ごとにエレメントIDを設定することができます。
self.table1.thinkingAnalyticsViewID = @"testtable1";
// Multi-Instance, Configure with appid
// self.table1.thinkingAnalyticsViewIDWithAppid = @{ @"app1" : @"testtableID2",
@"app2" : @"testtableID3" };
その時、table1のクリックイベントに#element_idのプリセットプロパティを記録されます。
#element_idは文字列型で、エレメントのカスタムIDを表示します。
# 3.5.2 viewクリックイベントのプロパティをカスタム
ほとんどのviewはthinkingAnalyticsViewPropertiesを利用してカスタムプロパティを設定できます:
self.table1.thinkingAnalyticsViewProperties = @{@"key1":@"value1"};
// Multi-Instance, Configure with appid
// self.table1.thinkingAnalyticsViewPropertiesWithAppid = @{@"app1":@{@"tablekey":@"tablevalue"},
@"app2":@{@"tablekey2":@"tablevalue2"}
};
# 3.5.3 UITableViewとUICollectionViewviewクリックイベントのプロパティ
UITableViewとUICollectionViewに対しては、Protocolを通じてカスタムプロパティの設定を行えます:
1.View Controllerのカテゴリの中でProtocolを実行
2.カテゴリの中で代理を設定します。viewDidLoadを利用して設定を推奨しております
self.table1.thinkingAnalyticsDelegate = self;
table1はカスタムプロパティのViewに変更できます。
3.その後はView Controllerのタイプで実現できます
UITableViewでの実現方法となります
//Set all APPID instances and set the custom properties of UITableView
-(NSDictionary *) thinkingAnalytics_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath
{
return @{@"testProperty":@"test"};
}
/** Multi-Instance, Configure with appid
* -(NSDictionary *) thinkingAnalyticsWithAppid_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath {
* return @{@"app1":@{@"autoPro":@"tablevalue"},
* @"app2":@{@"autoPro2":@"tablevalue2"}
* };
* }
*/
UICollectionViewでの実現方法となります
//Set all APPID instances and set the custom properties of UICollectionView
-(NSDictionary *) thinkingAnalytics_collectionView:(UICollectionView *)collectionView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath;
{
return @{@"testProperty":@"test"};
}
/** Multi-Instance, Configure with 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に変更可能で、代理設定時に合わせて設定してください。
# 3.6 クラッシュイベント(Crash)
APPが予想外の異常がある際に、クラッシュイベントを収集されます。
- イベント名:ta_app_crash
- プリセットプロパティ:
#app_crashed_reason文字列型で、クラッシュ発生時のスタックトレースを記録されます。
# 自動収取イベントを無視
以下の方法で、特定のページまたはviewの自動収集イベントを無視することができます。
# 4.1 ページの自動収集イベントを無視
特定ページのView Controller 自動収集イベントで収集したくない場合(ページ閲覧とviewクリック)以下の方法で実現可能です。
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:@"IgnoredViewController"];
//ignore some screen
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID] ignoreAutoTrackViewControllers:array];
# 4.2 特定のタイプviewのクリックイベントを無視
特定のタイプviewのクリックイベントを無視したい場合は、以下の方法で実現可能です。
[TDAnalytics ignoreViewType:[IgnoredClass class]];
ignoredClassは無視したいviewのタイプDialog、Checkboxなど
# 4.3 特定のエレメントviewのクリックイベントを無視
特定のエレメントviewのクリックイベントを無視したい場合は、以下の方法で実現可能です。
self.table1.thinkingAnalyticsIgnoreView = YES;
// Multi-Instance, Configure with appid
// self.table2.thinkingAnalyticsIgnoreViewWithAppid = @{@"appid1" : @YES,@"appid2" : @NO};
table1は無視したいViewを差し替えすることが可能です。
# 自動収集イベントのプリセットプロパティ
以下のプリセットプロパティは、自動収集イベントの中で特有のプリセットプロパティとなります。
- APP 起動イベント(ta_app_start)のプリセットプロパティ
| プロパティ名 | 名称 | タイプ | 説明 |
|---|---|---|---|
| #resume_from_background | バックグラウンドから再開かどうか | 文字列 | APPの起動は直接起動なのか、バックグラウンドから再開なのか。trueはバックグラウンドから再開で、falseは直接起動となります。 |
| #start_reason | アプリケーションの起動元 | 文字列 | JSON文字列です。アプリがURLまたはIntentを使用して開かれる場合、URLの内容とIntentのデータを自動的に記録します。例:{url:"thinkingdata://","data":{}} |
| #background_duration | バックグラウンド滞在時間 | 数値 | startイベントが2回発生した間隔内で、アプリがバックグラウンドにある時間、 単位:秒 |
| プロパティ名 | 名称 | タイプ | 説明 |
|---|---|---|---|
| #duration | イベント時間経過 | 数値 | APP起動からの時間経過(起動からクローズ)、単位は秒 |
| プロパティ名 | 名称 | タイプ | 説明 |
|---|---|---|---|
| #title | ページタイトル | 文字列 |
viewが属しているActivityのタイトルで、Activityのtitleプロパティで値を付与されます |
| #screen_name | ページ名称 | 文字列 |
viewが属しているActivityのパッケージ名、カテゴリ名 |
| #url | ページURL | 文字列 |
現在ページのURL、getScreenUrlを呼び出してURLの設定を行う必要があります。 |
| #referrer | リファラー | 文字列 |
本ページに移動する前のURLで、getScreenUrlを呼び出して設定が必要です。 |
| プロパティ名 | 名称 | タイプ | 説明 |
|---|---|---|---|
| #title | ページタイトル | 文字列 |
viewが属しているActivityのタイトルで、Activityのtitleプロパティで値を付与されます |
| #screen_name | ページ名称 | 文字列 |
viewが属しているActivityのパッケージ名、カテゴリ名 |
| #element_id | エレメント ID | 文字列 |
viewのIDsetViewIDを呼び出しして設定可能です |
| #element_type | エレメントタイプ | 文字列 | viewのタイプ |
| #element_selector | エレメントセレクター | 文字列 |
viewのviewPathのスプライシング |
| #element_position | エレメント位置 | 文字列 |
viewの位置情報、viewがpositionプロパティが存在する時に送信されます |
| #element_content | エレメント内容 | 文字列 | view上の内容 |
| プロパティ名 | 名称 | タイプ | 説明 |
|---|---|---|---|
| #app_crashed_reason | 異常情報 | 文字列 | クラッシュ発生時のスタックトレースを記録されます |
# 自動収集イベントでカスタムプロパティ設定
enableAutoTrack:properties:を利用して、自動収集イベント機能を有効にすることができます。それと同時にカスタムプロパティ設定を行えます
[TDAnalytics enableAutoTrack:TDAutoTrackEventTypeAll properties:@{@"auto_key1": @"auto_value1"}];
setAutoTrackProperties:properties:を利用してカスタムプロパティの設定もしくは更新できます
[TDAnalytics setAutoTrackProperties:TDAutoTrackEventTypeAll properties:@{@"auto_key2": @"auto_value2"}];
# 自動収集イベントのコールバック
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 @{};
}];
データ格納に影響しないようにコールバックで時間のかかる操作を設定しないでください。
