# 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
とUICollectionView
viewクリックイベントのプロパティ
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 @{};
}];
データ格納に影響しないようにコールバックで時間のかかる操作を設定しないでください。