# iOS SDK自動収集ガイド
# 1、自動収集の紹介
TAシステムは、データ収集を自動化するインターフェースを提供し、ビジネス要件に応じて自動収集が必要なデータを選択することができます。
現在サポートしている自動収集イベントの種類は次のとおりです。
- APPインストール、APPインストールログの記録
- APP起動、バックグラウンドから起こす
- APP終了、バックグラウンドへの移動、起動時間の収集
- ユーザーのAPP内のページビュー(ネイティブページ)
- ユーザーのAPP内のコントロールクリック
- APPクラッシュ情報の記録
次に、各データの収集メソッドを詳しく紹介します。
# 2、自動収集の有効化
enableAutoTrack:
を呼び出して、自動収集機能を開きます:
// APPIDインスタンスの自動収集イベントを有効化. 複数のAPPIDインスタンスの自動収集をオンにする.
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID]enableAutoTrack:ThinkingAnalyticsEventTypeAppStart |
ThinkingAnalyticsEventTypeAppInstall |
ThinkingAnalyticsEventTypeAppEnd |
ThinkingAnalyticsEventTypeAppViewScreen |
ThinkingAnalyticsEventTypeAppClick |
ThinkingAnalyticsEventTypeAppViewCrash];
// シングルAPPIDインスタンスの場合、以下の方法で有効化する.
// [[ThinkingAnalyticsSDK sharedInstance] enableAutoTrack:ThinkingAnalyticsEventTypeAppStart |
// ThinkingAnalyticsEventTypeAppInstall |
// ThinkingAnalyticsEventTypeAppEnd |
// ThinkingAnalyticsEventTypeAppViewScreen |
// ThinkingAnalyticsEventTypeAppClick |
// ThinkingAnalyticsEventTypeAppViewCrash];
上記のパラメーターはそれぞれ次のように表します:
ThinkingAnalyticsEventTypeAppInstall
:APPインストール、APPインストールログの記録ThinkingAnalyticsEventTypeAppStart
:APP起動イベント、APP起動またはバックグラウンドから回復の記録ThinkingAnalyticsEventTypeAppEnd
:APPクローズイベント、APPバックグラウンドへの移動の記録ThinkingAnalyticsEventTypeAppViewScreen
:APPページビューイベントの記録ThinkingAnalyticsEventTypeAppClick
:APPコントロールクリックイベントの記録ThinkingAnalyticsEventTypeAppViewCrash
:APPクラッシュイベントの記録
業務状況に応じて、イベント収集に必要なパラメータを取り込み、複数のパラメーターは|
で分割してください。
パブリックイベントプロパティまたはカスタムゲストIDを設定するには、自動収集を有効にする前にsetSuperProperties:またはidentify:を呼び出してください。
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[ThinkingAnalyticsSDK startWithAppId:@"APP_ID"
withUrl:@"SERVER_URL"];
return YES;
}
[[ThinkingAnalyticsSDK sharedInstance] identify:@"123ABCabc"];
[[ThinkingAnalyticsSDK sharedInstance] setSuperProperties:@{
@"Channel":@"ABC",
@"Server":123,
@"isTest":@YES
}];
//ゲストIDとパブリックプロパティを設定した後,自動収集を有効化してください。
[[ThinkingAnalyticsSDK sharedInstance] enableAutoTrack:ThinkingAnalyticsEventTypeAppStart |
ThinkingAnalyticsEventTypeAppInstall |
ThinkingAnalyticsEventTypeAppEnd |
ThinkingAnalyticsEventTypeAppViewScreen |
ThinkingAnalyticsEventTypeAppClick |
ThinkingAnalyticsEventTypeAppViewCrash];
# 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ページビューイベントは、ユーザーがページ(View Controller)を切り替えるときに、発生します。
- イベント名: ta_app_view
- プリセットプロパティ:
#screen_name
は文字列型で、View Controllerのクラス名です。#title
は文字列型で、View Controller のタイトルで、値はcontroller.navigationItem.title
のプロパティ値です。
ページビューイベントに他のプロパティを追加して分析価値を拡張することができます。以下は、ページビューイベントのプロパティをカスタマイズするメソッドを紹介します。
# 3.4.1 カスタムページビューイベントのプロパティ
UIViewController
から継承したViewControllerについて、Protocol<TDScreenAutoTracker>
を実装することでプロパティとページのURL情報を設定することができます。SDKは自動的にgetTrackProperties:
の戻り値をViewControllerのAPPページビューイベントに追加し、getScreenUrl:
の戻り値をページのURLSchemaとして使用します。ページビューイベントがトリガーされるとプリセットプロパティ#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
は文字列型で、コントロールが属するViewControllerのクラス名です。#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.まずViewControllerクラスでProtocol<TDUIViewAutoTrackDelegate>
を実装します。
2.次にクラスでエージェントを設定し、viewDidLoad
メソッドに設定を行います。
self.table1.thinkingAnalyticsDelegate = self;
table1
はカスタムプロパティを設定するViewに置き換えます。
3.その後、ViewControllerのタイプに応じてメソッドを実装します。
- 以下は、
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インスタンスに対して設定を行う.UITableViewのカスタムプロパティを設定
-(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に置き換え、プロキシの設定時に対応します。
# 3.6 APPクラッシュイベント
APPは未捕獲エラーが発生すると、APPクラッシュイベントをアップロードします。
- イベント名: ta_app_crash
- プリセットプロパティ:
#app_crashed_reason
、文字型、クラッシュ時のスタックトラックを記録します。
# 4、自動收集事件の無視
次のメソッドで、ページまたはコントロールの自動収集イベントを無視します。
# 4.1 ページの自動収集イベントの無視
一部のページ(View Controller)で、自動収集イベント(ページビューやコントロールクリックイベントを含む)を転送したくない場合は、次のメソッドで無視することができます。
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:@"IgnoredViewController"];
// マルチAPPIDインスタンスの場合,シングルAPPIDインスタンスを設定.あるページの自動収集イベントを無視.
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID] ignoreAutoTrackViewControllers:array];
// シングルAPPIDインスタンスの場合に呼び出す.
// [[ThinkingAnalyticsSDK sharedInstance] ignoreAutoTrackViewControllers:array];
# 4.2 コントロールクリックイベントの無視
ある種類のコントロールクリックイベントを無視するには、次のメソッドを使用します。
// マルチAPPIDインスタンスの場合,シングルAPPIDインスタンスを設定.あるページの自動収集イベントを無視.
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID] ignoreViewType:[IgnoredClass class]];
// シングルAPPIDインスタンスの場合に呼び出す.
// [[ThinkingAnalyticsSDK sharedInstance] 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の起動原因の収集をサポートしている。 |
- APPクローズイベント(ta_app_end)のプリセットプロパティ
プロパティ 名 | 日本語 | 説明 |
---|---|---|
#duration | イベントの長さ | アプリの起動から終了までの時間を秒単位で表す。 |
- 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:
を呼び出して、自動収集機能を有効化し、カスタムプロパティを設定します。
// 自動収集カスタムプロパティ
[[ThinkingAnalyticsSDK sharedInstance] enableAutoTrack:ThinkingAnalyticsEventTypeAll properties:@{@"auto_key1": @"auto_value1"}];
setAutoTrackProperties:properties:
を呼び出して、カスタムプロパティを設定または更新します。
[[ThinkingAnalyticsSDK sharedInstance] setAutoTrackProperties:ThinkingAnalyticsEventTypeAppEnd properties: @{@"auto_key2": @"auto_value2"}];
# 7、自動収集イベントのコールバック
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 @{};
}];
データが正常に格納できるように、コールバックで時間のかかる操作をしないでください。