# iOS SDK 自動収集ガイド
# 自動収集の紹介
TE システムで自動収集できる呼び出しは以下となります。
実際業務に応じてご利用ください。
- インストールイベント(Install):APP のインストール行動を記録
- 起動イベント(Open APP):APP を起動、またはバックグラウンドから APP を起動
- クローズイベント(Close APP):APP をクローズまたは APP がバックグラウンドに収める。同時に起動の時間経過を収集
- 閲覧イベント(View Page):APP 内でページビュー(View Controller)を閲覧
- クリックイベント(Click):APP 内のコントローラ(view)をクリック
- クラッシュイベント(Crash):APP がクラッシュされた際の情報収集
これからそれぞれデータの収集メソッドについて紹介します。
# 自動収集を有効化
enableAutoTrack
を呼び出しして、自動収集機能を有効化できます:
//enable autotrack event
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID]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 のクリックイベントを無視したい場合は、以下の方法で実現可能です。
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID] 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は直接起動となります。 |
- 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 setViewID を呼び出しして設定可能です |
#element_type | エレメントタイプ | 文字列 | viewのタイプ |
#element_selector | エレメントセレクター | 文字列 | viewの viewPath のスプライシング |
#element_position | エレメント位置 | 文字列 | viewの位置情報、viewが position プロパティが存在する時に送信されます |
#element_content | エレメント内容 | 文字列 | view上の内容 |
- APP のクラッシュイベント(ta_app_crash)のプリセットプロパティ
プロパティ名 | 名称 | タイプ | 説明 |
---|---|---|---|
#app_crashed_reason | 異常情報 | 文字列 | クラッシュ発生時のスタックトレースを記録されます |
# 自動収集イベントでカスタムプロパティ設定
enableAutoTrack:properties:
を利用して、自動収集イベント機能を有効にすることができます。それと同時にカスタムプロパティ設定を行えます
[[ThinkingAnalyticsSDK sharedInstance] enableAutoTrack:ThinkingAnalyticsEventTypeAll properties:@{@"auto_key1": @"auto_value1"}];
setAutoTrackProperties:properties:
を利用してカスタムプロパティの設定もしくは更新できます
[[ThinkingAnalyticsSDK sharedInstance] setAutoTrackProperties:ThinkingAnalyticsEventTypeAppEnd properties: @{@"auto_key2": @"auto_value2";
# 自動収集イベントのコールバック
v2.7.4 以降は自動収集イベントのコールバック機能が対応できるようになりました。enableAutoTrack:callback:
で利用して自動収集を有効にし、callback の中でプロパティの追加と更新を行えます。
[[ThinkingAnalyticsSDK sharedInstance] enableAutoTrack:ThinkingAnalyticsEventTypeAll callback:^NSDictionary * _Nonnull(ThinkingAnalyticsAutoTrackEventType eventType, NSDictionary * _Nonnull properties) {
if (eventType == ThinkingAnalyticsEventTypeAppStart) {
return @{@"addkey":@"addvalue"};
}
if (eventType == ThinkingAnalyticsEventTypeAppEnd) {
return @{@"updatekey":@"updatevalue"};
}
return @{};
}];
データ格納に影響しないようにコールバックで時間のかかる操作を設定しないでください。
← マルチ - インスタンス コンプライアンス →