# iOS - Advanced
# ユーザーID設定
SDKインスタンスはデフォルトでdeviceID_install回数
でユーザーのゲストIDとして付与します。ゲストIDはユーザーがログインする前のユーザー識別IDとして使われます。ただし、事前に注意すべきのは、アカウントIDはユーザー再インストールすると変更されます。
# 1.1 ゲストID設定
::: Tips
一般的には、ゲストIDを手動設定することは不要で、ユーザー識別ルールを確認した上で、ゲストID設定を行なってください。
もしゲストIDを変更したい場合は、SDKを初期設定したあとですぐ呼び出すように設定してください。
:::
独自でゲストIDの管理体制がある場合は、identify
を呼び出して、ゲストIDを設定してください
現在のゲストIDを取得したい場合は、getDistinctId
を呼び出して取得できます。
# 1.2 アカウントID設定
ユーザーログイン時に、Login
を呼び出してアカウントIDを設定できます。TEはアカウントIDをユーザー身分の識別IDとして使われています。一度設定されたアカウントIDはLogout
を呼び出す前に保存されます。Login
を多数呼び出した場合は、その前のアカウントIDを上書きされます。
この方法ではログインイベントとして送信されません
# 1.3 アカウントIDをクリア
ユーザーがログアウトイベントを行う前に、Logout
を呼び出して、アカウントIDをクリアすることができます。もう一度Login
を呼び出す前にゲストIDはユーザー身分の識別IDとして使われます。
ユーザーがアカウントを削除する際にLogoutを呼び出すよう設定してください。
ログアウトイベントとして送信されません。
# イベント送信
SDKが初期化設定完了後、データプランに応じて、トラッキングコードを実装し、ユーザーの行動データを収集することができます。一般的には、通常イベント送信は十分収集可能で、実際業務シーンによって、初回・更新可能などの特殊イベント収集することも可能です。
# 2.1 通常イベント
track
を呼び出して、データプランに応じてイベントのプロパティを設定の上、データ送信できます。
例:アイテム購入
# 2.2 初回イベント
初回イベントはあるデバイスもしくはその他分析主体のIDごとで、1回目のみ記録されるイベントとなります。
例えば:あるデバイスのアクティブイベントはそれを使って便利です
もしデバイス以外の主体で初回判断したい場合は、first_check_idで初回イベントカスタムできます
注意:サーバ側で初回なのかを検証するため、初回イベントはデフォルトで1時間遅延して格納されます。
# 2.3 更新可能イベント
通常イベントはデータを格納されたら更新不可となりますが、データ更新を行いたい場合は、更新可能イベントを利用してください。更新可能イベントは識別イベントのIDが必要で、作成時はプロパティに入れてください。TEシステムはイベント名とイベントIDを識別対象として更新データを確定します。
# 2.4 書き替えイベント
書き替えイベントは更新可能イベントと同じようで、書き替えイベントは過去データを最新のデータで上書きされるため、前のデータを削除し新しくデータを格納するように見られます。TEシステムはイベント名とイベントIDを識別対象として更新データを確定します。
# 2.5 共通イベントプロパティ
共通イベントプロパティは全てのイベント送信する際に付属されているプロパティとなります。
プロパティの更新頻度により、共通イベントプロパティは静的共通イベントプロパティ
と動的共通イベントプロパティ
があります。
実際業務ニーズに応じて、共通イベントプロパティの設定を行なってください;通常イベント送信する前に、共通イベントプロパティを設定しておいてください。同じイベントに、共通イベントプロパティ、イベントカスタムプロパティ、プリセットプロパティのKeyは同じの場合は、以下の優先順位で値付けされます。
カスタムプロパティ>動的共通イベントプロパティ>静的共通イベントプロパティ>プリセットプロパティ
# 2.5.1 静的共通イベントプロパティ
静的共通イベントプロパティは低頻度変化かつ全てのイベントの属しているプロパティ:例えばVIPレベル。setSuperProperties
を利用して、静的共通イベントプロパティを設定したら、SDKはイベント収集時に設定されている共通イベントプロパティを当イベントのプロパティとして利用されます。
静的共通イベントプロパティはキャッシュに保存されるため、APPを起動するたびに呼び出す必要はありません。もしそのプロパティが存在されているのであれば、新たに設定するプロパティは元のプロパティ値を書き替えされます;もし以前そのプロパティが存在しない場合は、新規プロパティとして作成されます。プロパティ設定以外にはAPI利用で静的共通イベントプロパティを管理できます。
# 2.5.2 動的共通イベントプロパティ
動的共通イベントプロパティは高頻度変化かつ全てのイベントに属しているプロパティです。(例えばコインの数量)setDynamicSuperPropertiesTracker
を利用し動的共通イベントプロパティを設定した後で、SDKはイベント収集時に自動でgetDynamicSuperProperties
のプロパティを取得し、イベント送信されます。
# 2.6 イベント時間記録
イベントの経過時間を記録したい場合は、timeEvent
を呼び出して計算可能です。計算したいイベント名称を設定し、該当イベントが送信される際に、自動的にイベントプロパティに#duration
のプロパティを追加され、経過時間を記録されます。単位は秒です。
注意:一個のイベントは一個の時間経過計算タスクをしかつけないです
# ユーザープロパティ
TEでユーザープロパティを設定するAPIはuser_set
、user_setOnce
、user_add
、user_unset
、user_delete
、user_append
、user_uniqAppend
。
# 3.1 user_set
一般的にユーザープロパティ設定はuser_set
を用いて設定できます。この呼び出しを利用して元のプロパティ値を書き替えされます。元のプロパティ値がない場合は、新規作成になります。データタイプは格納されたデータタイプと一致します。以下は例:
# 3.2 user_setOnce
もしユーザープロパティは一回設定の上で変更がない場合は、user_setOnce
を用いて設定できます。この呼び出しは値のある際に書き替えを行いません。例:初回課金時間設定
# 3.3 user_add
もし数値型のプロパティで累積計算を行いたい場合は、user_add
を用いて設定できます。この呼び出しは値のない際に自動で0を付与した上で計算されます。“-”値で計算することも可能で、例:累積課金金額
# 3.4 user_unset
ユーザープロパティをリセットしたい場合は、user_unset
を用いて設定できます。もしそのプロパティはクラスターで作成されていない場合は、user_unset
はそのプロパティを作成されません。
# 3.5 user_delete
ユーザーを削除したい場合はuser_delete
を用いて設定できます。削除したら当ユーザーのユーザープロパティはクエリできなくなりますが、当ユーザーが生成したイベントデータはクエリできます。
# 3.6 user_append
user_append
を用いて、Array
型のユーザープロパティを追加できます。
# 3.7 user_uniqAppend
v2.8.0 以降のバージョンは、user_uniqAppend
を用いてArray型のユーザープロパティを追加できます。
user_uniqAppend
は重複排除でユーザープロパティを追加されますが、user_append
は重複排除しません。
# 暗号化機能
v2.8.0 以降のバージョンは、SDKデータ送信にAES+RSA暗号化を対応できるようになりました。データの暗号化処理はクライアントとサーバと合わせて処理となります、詳しくは弊社担当スタッフまでご連絡ください。
NDConfig *config = [[TDConfig alloc]initWithAppid:APPID serverUrl:SERVER_URL];
//Enable the encryption function
config.enableEncrypt = YES;
//set public key information
config.secretKey = [[TDSecretKey alloc] initWithVersion:1 publicKey:@"publicKey"];
[ThinkingAnalyticsSDK startWithConfig:config];
# H5ページとの連携
H5ページデータのJavaScript SDK との連携をしたい場合は、初期化WebView
設定時に以下の呼び出しを有効にしてください。詳しくは H5とAPP SDKの連携
# その他機能
# 6.1 デバイスIDを取得
getDeviceId
を呼び出して、デバイスIDを取得できます:
[instance getDeviceId];
# 6.2 デフォルトタイムゾーン設定
デフォルトでSDKは本デバイスの表示時間をイベント発生時間として送信されます。デフォルトタイムゾーンを指定することも可能です。
// get TDConfig instance
TDConfig *config = [[TDConfig alloc] init];
// set UTC as the default timezone
config.defaultTimeZone = [NSTimeZone timeZoneWithName:@"UTC"];
// initialize SDK
ThinkingAnalyticsSDK *instance = [ThinkingAnalyticsSDK startWithAppId:@"YOUR_APPID" withUrl:@"YOUR_SERVER_URL" withConfig:config];
タイムゾーン指定したら、本デバイスのタイムゾーンのデータが破棄されます。もし本デバイスのタイムゾーンを保留したい場合は、別途イベントにカスタムプロパティを追加してください。
# 6.3 時間校正
SDK デフォルトで本デバイス時間をイベント発生時間として利用されますが、ユーザーが手動でデバイスの時間を修正したりするとそのまま修正後の時間として送信されますため、分析に支障が出てしまいます。時間校正を利用して、イベント発生時間の正確性を保つことができます。TEシステムはtimestamp
と NTP
の二つの時間校正方法を対応しております。
- サーバ側から同期された現在の
timestamp
を使ってSDKの時間を校正できます。その後、全て時間未指定の呼び出し(イベントデータとユーザープロパティ設定)は校正後の時間を発生時間として使われます。
- NTPサーバアドレス設定でSDKはNTPサービスの当地時間を取得し利用されます。デフォルトで時間オーバー(3秒)して取得できなかった場合は、ローカル時間として送信されます。
1、NTPサービスで時間校正を行うには不安定性があり、timestamp
を推奨しております。
2、NTPサービスを利用する場合は、ネット環境が良好で、ユーザーデバイスは素早くサーバ時間を取得可能できるのを保つ必要があります。
# 6.4 即時データ送信
一般的には一定の時間間隔で、または一定のデータ量を貯めてからデータ送信となりますが、特定のイベントデータを即時にデータ送信したい場合はflush
を用いて設定できます。