自動収集
OpenHarmony SDKは、インストール、起動、終了などのイベントの自動収集に対応しています。
1. はじめに
AEシステムはデータを自動的に収集するためのインターフェースを提供しており、業務要件に応じて、自動収集するデータを選択できます。
現在対応している自動収集イベントの種類は次のとおりです:
- インストールイベント:APPがインストールされた行動を記録します
- 起動イベント:APPを開く操作と、バックグラウンドからAPPを開く操作を含みます
- 終了イベント:APPを閉じる操作と、Appがバックグラウンドに移行する操作を含みます
- 閲覧イベント:ユーザーがAPP内でページ(Ability)を閲覧した行動
- クリックイベント:ユーザーがAPP内でコントロールをクリックした行動
- クラッシュイベント:APPがクラッシュしたときに、クラッシュ情報を記録します(native層のクラッシュには現在対応していません)
以下では、各データの収集方法について詳しく説明します
2. 自動収集を有効にする
enableAutoTrackを呼び出して、自動収集機能を有効にできます:
//APPインストールイベント TDAutoTrackEventType.APP_INSTALL
//APP起動イベント TDAutoTrackEventType.APP_START
//APP終了イベント TDAutoTrackEventType.APP_END
//APPページ閲覧イベント TDAutoTrackEventType.APP_VIEW_SCREEN
//APPコントロールクリックイベント TDAutoTrackEventType.APP_CLICK
//APPクラッシュイベント TDAutoTrackEventType.APP_CRASH
TDAnalytics.enableAutoTrack(context,TDAutoTrackEventType.APP_START | TDAutoTrackEventType.APP_INSTALL | TDAutoTrackEventType.APP_END | TDAutoTrackEventType.APP_VIEW_SCREEN | TDAutoTrackEventType.APP_CLICK | TDAutoTrackEventType.APP_CRASH)
enableAutoTrackはメインスレッドで呼び出す必要があります。workスレッドでSDKを初期化する必要がある場合は、以下のコードを参考にしてください
const workerInstance = new worker.ThreadWorker("./workers/worker.ets");
TDAnalytics.enableAutoTrack(this.context,
TDAutoTrackEventType.APP_START | TDAutoTrackEventType.APP_INSTALL | TDAutoTrackEventType.APP_END |
TDAutoTrackEventType.APP_VIEW_SCREEN | TDAutoTrackEventType.APP_CRASH |
TDAutoTrackEventType.APP_CLICK,
(command: string, params: Object, appId?: string) => {
//ここでトリガーが必要な自動収集イベントがコールバックされます。メッセージをworkスレッドに送信して処理する必要があります
workerInstance.postMessage({
type: command,
params: params
})
})
const workerPort = worker.workerPort;
workerPort.onmessage = (d: MessageEvents): void => {
if (d.data.type === 'track') {
TDAnalytics.track(d.data.params);
} else if (d.data.type === 'timeEvent') {
TDAnalytics.timeEvent(d.data.params);
} else if (d.data.type === 'flush') {
TDAnalytics.flush()
}
}
3. 詳細
3.1 インストールイベント
APPインストールイベントは、APPの実際のインストールを記録するもので、APPの起動時に送信されます。イベントのトリガー時間は、APPのインストール後に初めて起動した時間です。APPのアップグレードではインストールイベントはトリガーされませんが、削除して再インストールした場合はインストールイベントが送信されます。
- イベント名:ta_app_install
3.2 起動イベント
APP起動イベントは、ユーザーがAPPを開いたとき、またはバックグラウンドからAPPを復帰させたときにトリガーされます。イベントの詳細は次のとおりです:
- イベント名:ta_app_start
- プリセットプロパティ:
#resume_from_background、ブール型。APPがユーザーによって開かれたのか、バックグラウンドから復帰したのかを示します。値がtrueの場合はバックグラウンドからの復帰、falseの場合は直接開かれたことを示します。 - ApplicationStateChangeCallbackのonApplicationForegroundコールバックによってトリガーされます
3.3 終了イベント
APP終了イベントは、ユーザーがAPPを閉じたとき、またはAPPをバックグラウンドに移したときにトリガーされます。イベントの詳細は次のとおりです:
- イベント名:ta_app_end
- プリセットプロパティ:
#duration、数値型。今回のAPPアクセス(起動から終了まで)の時間を示し、単位は秒です。 - ApplicationStateChangeCallbackのonApplicationBackgroundコールバックによってトリガーされます
3.4 ページ閲覧イベント
APPページ閲覧イベントは、ユーザーがページ(Ability)を閲覧したときにトリガーされます。イベントの詳細は次のとおりです:
- イベント名:ta_app_view
- プリセットプロパティ:
#screen_name、文字列型。Abilityの単純クラス名です
-
カスタムページデータ
- routerによる切り替え
router.pushUrl({url: 'pages/PageOne', params: {'ta_data_tag': {'key1': 'value1','key2': 234,'ignore': true}}})//ta_data_tag はカスタムパラメータです//ignoreがtrueの場合、このページの閲覧イベントを無視します- navigationによる切り替え
interface UserLoginParam {// 業務のカスタムパラメータcustomParams?: string//遷移先ページの閲覧イベントに追加するカスタムパラメータta_data_tag?: ThinkingDataPageParams}interface ThinkingDataPageParams {key1: stringkey2: number,ignore?:boolean}let paramData: UserLoginParam = { customParams: 'AAA', ta_data_tag: { key1: 'xxx', key2: 18,ignore:true } }this.navPathStack.pushPath({name: 'NavDestinationTitle' + item,param: paramData});//ta_data_tag はカスタムパラメータです//ignoreがtrueの場合、このページの閲覧イベントを無視します
3.5 クリックイベント
APPコントロールクリックイベントは、ユーザーがコントロール(view)をクリックしたときにトリガーされます
-
イベント名:ta_app_click
-
プリセットプロパティ:
#screen_name、文字列型。コントロールが属するActivityのパッケージ名.クラス名です#element_type、文字列型。コントロールの種類です#element_id、文字列型。コントロールのIDです -
カスタムパラメータ
Button("Button", { type: ButtonType.Normal, stateEffect: true })
.width('30%')
.customProperty("ta_data_tag", {
'key1': 10,
'key2': 'this is a string',
'ignore':false
})
.onClick(() => {
})
//ta_data_tag はカスタムパラメータです
//ignoreがtrueの場合、この要素のクリックイベントを無視します
3.6 クラッシュイベント
APPで捕捉されない例外が発生すると、APPクラッシュイベントが送信されます
- イベント名:ta_app_crash
- プリセットプロパティ:
#app_crashed_reason、文字列型。クラッシュ時のスタックトレースを記録します - ErrorObserverのonUnhandledExceptionで監視します。nativeのクラッシュ収集には現在対応していません。

