応用ガイド
1. ユーザーIDの設定
SDKインスタンスは、デフォルトでランダムなUUIDを各ユーザーのデフォルトのゲストIDとして使用します。このIDは、ユーザーが未ログイン状態のときの識別IDとして使われます。なお、ゲストIDは、ユーザーがAppを再インストールしたり、デバイスを変更したりすると変わります。
1.1 ゲストIDの設定
通常、ゲストIDをカスタマイズする必要はありません。ユーザー識別ルールを理解したうえで、ゲストIDを設定してください。
ゲストIDを置き換える必要がある場合は、SDKの初期化が完了した直後に呼び出してください。不要なアカウントが生成されないよう、複数回呼び出さないでください
Appでユーザーごとに独自のゲストID管理体系がある場合は、SetDistinctIdを呼び出してゲストIDを設定できます:
// ゲストIDをThinkerに設定
TDAnalytics.SetDistinctId("Thinker");
現在のゲストIDを取得する必要がある場合は、GetDistinctIdを呼び出して取得できます:
//ゲストIDを返す
String distinctId = TDAnalytics.GetDistinctId();
1.2 アカウントIDの設定
ユーザーがログインする際にloginを呼び出して、ユーザーのアカウントIDを設定できます。AEプラットフォームはアカウントIDを識別IDとして使用し、設定したアカウントIDはlogoutを呼び出すまで保持されます。loginを複数回呼び出すと、以前のアカウントIDが上書きされます。
// ユーザーのログイン固有識別子。このデータは送信データの#account_idに対応し、この時点で#account_idの値はTA
TDAnalytics.Login("TA");
このメソッドはログインイベントを送信しません
1.3 アカウントIDのクリア
ユーザーがログアウトした後、Logoutを呼び出してアカウントIDをクリアできます。次にLoginを呼び出すまでは、ゲストIDが識別IDとして使用されます。
TDAnalytics.Logout();
Logoutは、明示的なログアウトイベントが発生したとき(たとえばユーザーがアカウントを解約したとき)にのみ呼び出すことをお勧めします。Appを閉じるときに呼び出す必要はありません。
このメソッドはログアウトイベントを送信しません
2. イベントの送信
SDKの初期化が完了したら、データのトラッキングを行い、ユーザーの行動情報を収集できます。通常は通常イベントで業務シナリオの要件を満たせますが、実際の業務シナリオに応じて、初回イベントや更新可能イベントなどを使用することもできます。
2.1 通常イベント
Trackを呼び出してイベントを送信できます。事前に整理したドキュメントに従って、イベントのプロパティと送信条件を設定することをお勧めします。ここでは、ユーザーが商品を購入する場合を例にします:
Dictionary<string, object> properties = new Dictionary<string, object>(){
{"product_name", "商品名"}
};
TDAnalytics.Track("product_buy", properties);
2.2 初回イベント
初回イベントとは、デバイスまたはその他のディメンションのIDに対して、1回だけ記録されるイベントのことです。たとえば、あるデバイスで最初に発生したイベントを記録したい場合は、初回イベントでデータを送信できます。
Dictionary<string, object> properties = new Dictionary<string, object>() {
{ "status", 1}
};
TDFirstEventModel firstEvent = new TDFirstEventModel("first_event");
firstEvent.Properties = properties;
TDAnalytics.Track(firstEvent);
デバイス以外のディメンションで初回かどうかを判定したい場合は、初回イベントのfirst_check_idをカスタマイズできます:
// ユーザーIDを初回イベントのfirst_check_idに設定し、ユーザーの初回アクティベーションイベントを収集
Dictionary<string, object> properties = new Dictionary<string, object>() {
{ "status", 1}
};
TDFirstEventModel firstEvent = new TDFirstEventModel("first_event", "any-user-id");
firstEvent.Properties = properties;
TDAnalytics.Track(firstEvent);
注意:初回かどうかの検証はサーバー側で行われるため、初回イベントはデフォルトで1時間遅れて取り込まれます。
2.3 更新可能イベント
更新可能イベントを使用すると、特定のシナリオでイベントデータを変更する必要がある場合に対応できます。更新可能イベントでは、そのイベントを識別するIDを指定し、更新可能イベントのオブジェクトを作成する際に渡す必要があります。AE管理画面は、イベント名とイベントIDに基づいて更新するデータを特定します。
// 例: 更新可能なイベントを送信。イベント名はUPDATABLE_EVENTとします
// 送信後のイベントプロパティは status が 3、price が 100
TDUpdatableEventModel updatableEvent = new TDUpdatableEventModel("UPDATABLE_EVENT", "test_event_id");
updatableEvent.Properties = new Dictionary<string, object>{
{"status", 3},
{"price", 100}
};
TDAnalytics.Track(updatableEvent);
// 送信後、イベントプロパティ status は 5 に更新され、price は変わりません
TDUpdatableEventModel updatableEvent_new = new TDUpdatableEventModel("UPDATABLE_EVENT", "test_event_id");
updatableEvent_new.Properties = new Dictionary<string, object>{
{"status", 5}
};
TDAnalytics.Track(updatableEvent_new);
2.4 上書き可能イベント
上書き可能イベントは更新可能イベントと似ていますが、上書き可能イベントでは最新のデータで過去のデータを完全に上書きする点が異なります。効果としては、前のデータを削除して最新のデータを格納するのと同じです。AE管理画面は、イベント名とイベントIDに基づいて更新するデータを特定します。
// 例: 上書き可能なイベントを送信。イベント名はOVERWRITABLE_EVENTとします
// 送信後のイベントプロパティは status が 3、price が 100
TDOverwritableEventModel overWritableEvent = new TDOverwritableEventModel("OVERWRITABLE_EVENT", "test_event_id");
overWritableEvent.Properties = new Dictionary<string, object>{
{"status", 3},
{"price", 100}
};
TDAnalytics.Track(overWritableEvent);
// 送信後、イベントプロパティ status は 5 に更新され、price プロパティは削除されます
TDOverwritableEventModel overWritableEvent_new = new TDOverwritableEventModel("OVERWRITABLE_EVENT", "test_event_id");
overWritableEvent_new.Properties = new Dictionary<string, object>{
{"status", 5}
};
TDAnalytics.Track(overWritableEvent_new);
2.5 共通イベントプロパティ
共通イベントプロパティとは、すべてのイベントで送信されるプロパティのことです。プロパティの更新頻度に応じて、共通イベントプロパティは静的共通イベントプロパティと動的共通イベントプロパティに分けられます。具体的な業務シナリオの要件に応じて、異なる共通イベントプロパティの設定方法を選択できます。イベントを送信する前に、共通イベントプロパティを設定しておくことを推奨します。同じイベントで、共通イベントプロパティ、イベントのカスタムプロパティ、プリセットプロパティのKeyが同じ場合は、次の優先順位で値が設定されます:カスタムプロパティ>動的共通イベントプロパティ>静的共通イベントプロパティ>プリセットプロパティ。
2.5.1 静的共通イベントプロパティ
静的共通イベントプロパティとは、変化の頻度が低く、すべてのイベントに含まれるプロパティのことです(ユーザーの会員レベルなど)。setSuperPropertiesで静的共通イベントプロパティを設定すると、SDKはイベントの収集時に、設定された共通イベントプロパティをイベントのプロパティとして取得します。
Dictionary<string, object> superProperties = new Dictionary<string, object>(){
{"vip_level", 2}
};
TDAnalytics.SetSuperProperties(superProperties);
静的共通イベントプロパティはキャッシュに保存されるため、Appを起動するたびに呼び出す必要はありません。そのプロパティがすでに存在する場合は、再設定したプロパティで元のプロパティ値が上書きされます。そのプロパティが存在しない場合は、新しく作成されます。プロパティの設定以外にも、静的共通イベントプロパティを操作するためのAPIを提供しており、日常的な業務要件に対応できます。
// プロパティ名がCHANNELの共通プロパティをクリア
TDAnalytics.UnsetSuperProperty("CHANNEL");
// すべての共通プロパティをクリア
TDAnalytics.ClearSuperProperties();
// すべての共通プロパティを取得
TDAnalytics.GetSuperProperties();
2.5.2 動的共通イベントプロパティ
動的共通イベントプロパティとは、変化の頻度が高く、すべてのイベントに含まれるプロパティのことです(ユーザーのコイン数など)。動的共通プロパティを設定するには、まず動的共通プロパティのクラスを新規作成してTDDynamicSuperPropertiesHandlerインターフェースを実装し、public Dictionary<string, object> GetDynamicSuperProperties()メソッドをオーバーライドします。このメソッドの戻り値が、設定する動的共通プロパティになります。次に、SetDynamicSuperPropertiesを呼び出して動的共通プロパティのオブジェクトを渡します。サンプルは次のとおりです:
// 1.動的共通プロパティの実装を定義。この例はコインの動的な変化を設定するサンプルです
public class DynamicProp : TDDynamicSuperPropertiesHandler
{
int coin = 0;
public Dictionary<string, object> GetDynamicSuperProperties()
{
coin++;
return new Dictionary<string, object>() {
{"coin",coin}
};
}
}
// 2.動的共通プロパティを設定
TDAnalytics.SetDynamicSuperProperties(new DynamicProp());
2.6 イベントの所要時間の記録
あるイベントの継続時間を記録する必要がある場合は、TimeEventを呼び出して計測を開始できます。計測したいイベントの名前を設定しておくと、そのイベントを送信する際に、記録した時間を表す#durationプロパティがイベントプロパティに自動的に追加されます。単位は秒です。なお、同じイベント名で計測中のタスクは1つしか持てません。
//次の例では、ユーザーがある商品ページに滞在した時間を集計します
//ユーザーが商品ページに入り、計測を開始
TDAnalytics.TimeEvent("stay_shop");
/**do someting
.......
**/
//ユーザーが商品ページを離れ、計測を終了。"stay_shop"イベントには、イベントの所要時間を表すプロパティ#durationが付与されます
TDAnalytics.Track("stay_shop");
3. ユーザープロパティ
AEプラットフォームが対応しているユーザープロパティ設定APIは、UserSet、UserSetOnce、UserAdd、UserUnset、UserDelete、UserAppend、UserUniqAppendです。
3.1 UserSet
一般的なユーザープロパティは、UserSetを呼び出して設定できます。このインターフェースで送信したプロパティは、既存のプロパティ値を上書きします。そのユーザープロパティが以前に存在しない場合は、新しく作成されます。
//この時点でuser_nameはTA
TDAnalytics.UserSet(new Dictionary<string, object>(){
{"user_name", "TA"}
});
//この時点でuser_nameはAE
TDAnalytics.UserSet(new Dictionary<string, object>(){
{"user_name", "AE"}
});
3.2 UserSetOnce
送信するユーザープロパティを一度だけ設定すればよい場合は、UserSetOnceを呼び出して設定できます。そのプロパティにすでに値がある場合、この情報は無視されます:
//first_payment_timeは2018-01-01 01:23:45.678
TDAnalytics.UserSetOnce(new Dictionary<string, object>(){
{"first_payment_time","2018-01-01 01:23:45.678"}
});
//first_payment_timeは引き続き2018-01-01 01:23:45.678
TDAnalytics.UserSetOnce(new Dictionary<string, object>(){
{"first_payment_time","2018-12-31 01:23:45.678"}
});
3.3 UserAdd
数値型のプロパティを送信する場合は、UserAddを呼び出してそのプロパティを累積加算できます。そのプロパティがまだ設定されていない場合は、0を代入してから計算します。負の値を渡すこともでき、その場合は減算と同じになります。
//この時点でtotal_revenueは30
TDAnalytics.UserAdd(new Dictionary<string, object>(){
{"total_revenue",30}
});
//この時点でtotal_revenueは678
TDAnalytics.UserAdd(new Dictionary<string, object>(){
{"total_revenue",648}
});
設定するプロパティのkeyは文字列で、Valueには数値のみ指定できます。
3.4 UserUnset
ユーザーの特定のプロパティをリセットする場合は、UserUnsetを呼び出して、そのユーザーの指定したユーザープロパティの値をクリアできます。このインターフェースには、文字列またはリスト型のパラメータを渡せます:
// 単一のユーザープロパティを削除
TDAnalytics.UserUnset("userPropertyName");
// 複数のユーザープロパティを削除
List<string> listProps = new List<string>();
listProps.Add("aaa");
listProps.Add("bbb");
listProps.Add("ccc");
TDAnalytics.UserUnset(listProps);
UserUnset:に渡す値は、クリアするプロパティのKeyです。
3.5 UserDelete
あるユーザーを削除する場合は、UserDeleteを呼び出してそのユーザーを削除できます。削除後はそのユーザーのユーザープロパティを照会できなくなりますが、そのユーザーが発生させたイベントは引き続き照会できます。
TDAnalytics.UserDelete();
3.6 UserAppend
v1.4.0以降、UserAppendを呼び出して、List型のユーザープロパティに要素を追加できます:
List<string> stringList = new List<string>();
stringList.Add("apple");
stringList.Add("ball");
// プロパティ名がuser_listのユーザープロパティに要素を2つ追加
TDAnalytics.UserAppend(new Dictionary<string, object>{
{"user_list", stringList }
});
3.7 UserUniqAppend
v2.4.0以降、UserUniqAppendを呼び出して、List型のユーザープロパティに要素を重複排除して追加できます。UserUniqAppendインターフェースを呼び出すと、追加するユーザープロパティの重複が排除されます。UserAppendインターフェースは重複排除を行わないため、ユーザープロパティに重複が存在することがあります。
//この時点でuser_listのプロパティ値は["apple","ball"]
List<string> stringList = new List<string>();
stringList.Add("apple");
stringList.Add("ball");
TDAnalytics.UserAppend(new Dictionary<string, object>{
{"user_list", stringList}
});
List<string> stringList1 = new List<string>();
stringList1.Add("apple");
stringList1.Add("cube");
//この時点でuser_listのプロパティ値は["apple","apple","ball","cube"]
TDAnalytics.UserAppend(new Dictionary<string, object>{
{"user_list", stringList1}
});
//この時点でuser_listのプロパティ値は["apple","ball","cube"]
TDAnalytics.UserUniqAppend(new Dictionary<string, object>{
{"user_list", stringList1}
});
4. 暗号化機能
v2.4.0以降、SDKはAES+RSAによるデータの暗号化に対応しています。データ暗号化機能はクライアントとサーバーの連携が必要です。具体的な使用方法については、カスタマーサクセス担当者にお問い合わせください。
TDConfigのEnableEncryptメソッドを呼び出し、公開鍵とデフォルトのバージョン番号を渡します。
TDConfig tdConfig = new TDConfig(appId, serverUrl);
// 暗号化送信を有効化(iOS/Androidのみ対応)し、デフォルトのバージョン番号と公開鍵を設定
tdConfig.EnableEncrypt("YOUR_ENCRYPT_PUBLIC_KEY", 1);
TDAnalytics.Init(tdConfig);
5. その他の機能
5.1 デバイスIDの取得
GetDeviceIdを呼び出して、デバイスIDを取得できます:
TDAnalytics.GetDeviceId();
// デバイスIDをゲストIDとして使用
// TDAnalytics.SetDistinctId(TDAnalytics.GetDeviceId());
5.2 デフォルトタイムゾーンの設定
デフォルトでは、SDKはインターフェースを呼び出した時点の端末のローカル時間をイベント発生時間として送信します。デフォルトタイムゾーンを設定するインターフェースでデフォルトのタイムゾーンを指定することもでき、その場合、すべてのイベントのイベント時間は設定したタイムゾーンに合わせて揃えられます:
TDConfig tdConfig = new TDConfig(appId, serverUrl);
tdConfig.timeZone = TDTimeZone.UTC;
TDAnalytics.Init(tdConfig);
指定したタイムゾーンでイベント時間を揃えると、デバイスのローカルタイムゾーン情報は失われます。デバイスのローカルタイムゾーン情報を保持する必要がある場合は、現時点ではご自身でイベントに関連するプロパティを追加する必要があります。
5.3 時間の校正
SDKはデフォルトで端末のローカル時間をイベント発生時間として送信します。ユーザーがデバイスの時間を手動で変更すると業務分析に影響が出るため、その場合は時間の補正を行うことで、イベント発生時間の正確性を確保できます。タイムスタンプ、NTPの2種類の時間補正方法を提供しています。
- サーバーから取得した現在のタイムスタンプを使用して、SDKの時間を補正できます。以降、時間を指定していないすべての呼び出し(イベントデータやユーザープロパティの設定操作を含む)では、補正後の時間が発生時間として使用されます。
// 1585633785954は現在のunixタイムスタンプ(単位はミリ秒)で、北京時間2020-03-31 13:49:45に相当します
TDAnalytics.CalibrateTime(1585633785954);
- NTPサーバーのアドレスを設定することもできます。設定後、SDKは渡されたNTPサービスのアドレスから現在時刻を取得し、SDKの時間を補正しようとします。デフォルトのタイムアウト時間(3秒)以内に正しい結果が返されなかった場合、以降はローカル時間でデータを送信します。
// Apple社のNTPサービスを使用して時間を補正
TDAnalytics.CalibrateTimeWithNtp("time.apple.com");
1. NTPサービスによる時間補正には一定の不確実性があるため、タイムスタンプによる補正方法を優先的に検討することを推奨します
2. ネットワーク状況が良好な場合にユーザーのデバイスがすばやくサーバー時間を取得できるよう、NTPサーバーのアドレスは慎重に選択してください
5.4 データの即時送信
業務シナリオによっては、データをすぐにAEサーバーに送信したい場合があります。その場合はFlushインターフェースを呼び出します
TDAnalytics.Flush();
5.5 国/地域コードの取得
業務シナリオによっては、ユーザーのデバイスの国/地域コードを知る必要がある場合があります。その場合はGetLocalRegionで取得できます
TDAnalytics.GetLocalRegion();
5.6 Lua方式での呼び出しのサポート
Luaファイルから直接呼び出す必要がある場合は、パッケージ化済みのLua APIを使用できます。クリックしてダウンロード
ダウンロードしたら、TDAnalytics.luaとTDAnalyticsProxy.csをプロジェクトにインポートします。
使用例は次のとおりです:
local config = {
appId = "AppId",
serverUrl = "ServerUrl",
enableLog = true, --ログを有効にするかどうか。デフォルトはfalse--
mode = 'debug' --デフォルトはnormal--
}
--SDKの初期化--
TDAnalytics.init(config);
--ユーザーがログイン済みの場合は、ユーザーのアカウントIDを一意の識別子として設定できます
TDAnalytics.login("TA")
--共通イベントプロパティを設定すると、すべてのイベントに共通イベントプロパティが付与されます
local superProperties = {}
superProperties["channel"] = "ta" -- 文字列
superProperties["age"] = 1 -- 数値
superProperties["isSuccess"] = true -- ブール値
superProperties["birthday"] = os.date("%Y-%m-%d %H:%M:%S") -- 時間
superProperties["object"] = { key="value" } -- オブジェクト
superProperties["object_arr"] = { { key="value" } } -- オブジェクトグループ
superProperties["arr"] = { "value" } -- 配列
TDAnalytics.setSuperProperties(superProperties) -- 共通イベントプロパティを設定
--イベントを送信
TDAnalytics.track("product_buy", {
product_name="商品名"
});
--ユーザープロパティを設定
TDAnalytics.userSet({
user_name = "TE"
})
5.7 WeChatミニゲームの自動収集イベント
WeChatミニゲームプラットフォームでは、現在showイベント、hideイベント、launchイベントの自動収集に対応しています。接続方法は次のとおりです:
- WeChatミニゲームプラグインのダウンロード
メニューバーのWindow->Package Manager-> + -> Add package from git url
PackageManager(gitインストールURL): https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk.git
- カスタムマクロ
メニューバーのEdit -> Project Settings -> Scripting Define Symbols
グローバルマクロパラメーターTD_WEIXIN_GAME_MODEを追加
「Apply」ボタンをクリックして設定を完了します
- アセンブリへの依存関係の追加
projectウィンドウのThinkingAnalyticsフォルダー -> TDAnalytics(Assembly Definition) -> Assembly Definition References -> + -> WxWasmSDKRuntime
使用例は次のとおりです:
// 自動収集イベントを有効化:AppStartでta_mg_show、AppEndでta_mg_hide、AppInstallでta_mg_launchを収集
TDAnalytics.EnableAutoTrack(TDAutoTrackEventType.AppStart | TDAutoTrackEventType.AppEnd | TDAutoTrackEventType.AppInstall);
5.8 IPによるデータ送信のサポート
DNSハイジャックによってクライアントのデータがサーバーに正常に送信できなくなる問題を予防・解決するため、SDKはServerUrlを解析してIPを取得し、IPを使って直接サーバーにデータを送信します。有効化の例は次のとおりです:
using ThinkingData.Analytics;
TDConfig config = new TDConfig(appId, serverUrl);
config.EnableDNSService(
TDDNSService.CloudAli,
TDDNSService.CloudFlare,
TDDNSService.CloudGoogle
);
TDAnalytics.Init(config);
列挙型TDDNSService
| 列挙値 | No. | 説明 |
|---|---|---|
CloudFlare | 0 | Cloudflare DoH |
CloudAli | 1 | Alibaba Cloud DoH |
CloudGoogle | 2 | Google DoH |
複数のサービスプロバイダーを渡すことができ、SDKは渡された順に試行します。
5.9 sdkエラーコールバックのサポート
SDKのデータ送信または関連操作の失敗を監視するために使用します。必ずInitの後に呼び出してください。
呼び出しのサンプルコードは次のとおりです:
using UnityEngine;
using ThinkingData.Analytics;
public class GameAnalytics : MonoBehaviour, TDErrorCallbackHandler
{
void Start()
{
TDConfig config = new TDConfig(appId, serverUrl);
TDAnalytics.Init(config);
TDAnalytics.RegisterErrorCallback(this);
// マルチインスタンス:TDAnalytics.RegisterErrorCallback(this, appId);
}
public void OnSDKErrorCallback(int code, string errorMsg, string ext)
{
Debug.Log("TDAnalytics error, code=" + code
+ ", errorMsg=" + errorMsg
+ ", ext=" + ext);
}
}
- パラメータの説明
| パラメータ | 説明 |
|---|---|
code | ネイティブSDKのエラーコード |
errorMsg | エラーの説明またはサーバーから返された情報 |
ext | 追加のコンテキスト。通常はその時点のリクエストデータ |
- エラーコード
| エラーコード | プラットフォーム | 説明 |
|---|---|---|
| 1001 | Android | ネットワークエラー |
| 1002 | Android | データベースへの挿入に失敗 |
| 1003 | Android | データベース異常 |
| 1004 | Android | データ送信(Flush)に失敗 |
| 1006 | Android | ネットワーク異常 |
| 10001 | iOS | ネットワークエラー |
5.10 Douyinミニゲームの自動収集イベント
Douyinミニゲームプラットフォームでは、現在showイベント、hideイベント、launchイベントの自動収集に対応しています。接続方法は次のとおりです:
- Douyinミニゲームプラグインのインストール
- カスタムマクロ
メニューバーのEdit -> Project Settings -> Scripting Define Symbols
グローバルマクロパラメーターTD_DOUYIN_GAME_MODEを追加
「Apply」ボタンをクリックして設定を完了します
使用例は次のとおりです:
// 自動収集イベントを有効化:AppStartでta_mg_show、AppEndでta_mg_hide、AppInstallでta_mg_launchを収集
TDAnalytics.EnableAutoTrack(TDAutoTrackEventType.AppStart | TDAutoTrackEventType.AppEnd | TDAutoTrackEventType.AppInstall);
6. チャネルSDKとの互換性
6.1 Tencent Ads
6.1.1 ソリューションの概要
TDAnalytics SDKを統合すれば、Tencent Ads SDKを別途統合する必要はありません。TDAnalyticsの初期化メソッドを実行すると、Tencent Ads SDKの初期化が自動的にトリガーされます。登録や課金などの重要なイベントを送信すると、設定に従ってこれらのイベント情報がTencent Adsに自動的に送信されます。
6.1.2 接続手順
- Tencent Ads SDKをダウンロードします。現在使用しているのは1.5.4ですが、他のバージョンに変更してもかまいません。
- 初期化
TDAnalytics SDKのバージョンは3.1.1以上である必要があります
TDConfig config = new TDConfig("APPID","SERVER");
config.reportingToTencentSdk = 2; //1 Tencentのみに送信 2 TencentとAEの両方に送信 3 AEのみに送信
TDAnalytics.Init(config);
データをTencentに送信する必要がある場合は、次の操作を行います:
WeChatミニゲームプロジェクトをエクスポートした後、dn-sdk-minigame.jsファイルをプロジェクトにインポートし、game.jsを修正してdn-sdkを読み込み、初期化を完了します
import { SDK } from "./dn-sdk-minigame.js";
try {
// 初期化
GameGlobal.dnSDK = new SDK({
user_action_set_id: 123xxxxxx,
secret_key: 'xxxxxxxxxxxxxxxxxxx',
appid: 'xxxxxxxxxxxxx',
});
// 起動を送信
GameGlobal.dnSDK.onAppStart();
} catch {
}
- ユーザーIDの設定
- setOpenId
openidは通常、バックエンドのインターフェースを呼び出して非同期で取得します(openidの取得方法)。openidを取得したら、*sdk.setOpenId()*メソッドを呼び出して設定してください。openidとunionidはどちらか一方しか設定できず、openidを優先して設定します。
openidを取得した後に呼び出します
TDAnalytics.login(openid);
- setUnionId
unionidは通常、バックエンドのインターフェースを呼び出して非同期で取得します(unionidの取得方法)。unionidを取得したら、*sdk.setUnionId()*メソッドを呼び出して設定してください。このメソッドでunionidを設定する必要があるのは、openidがない場合のみです。
unionidを取得した後に呼び出します
TDAnalytics.setDistinctId(unionid);
- 行動の送信
Dictionary<string, object> properties = new Dictionary<string, object>(){{"product_name", "商品名"}};
TDAnalytics.Track("product_buy", properties);
次の特定のイベントの場合は、指定のイベント名で送信する必要があります
| イベント | イベント名 | イベントプロパティ(そのうちのkeyを含める必要があります) |
ミニゲームの起動 | START_APP | なし |
課金 | PURCHASE | { value: 600 } |
登録 | REGISTER | |
休眠ユーザーの復帰 | RE_ACTIVE | { backFlowDay: 30 } |
ミニゲームをお気に入りに追加 | ADD_TO_WISHLIST | { type: 'default', } |
ミニゲームの共有 | SHARE | { target: 'APP_MESSAGE' } |
キャラクターの作成 | CREATE_ROL | { name: 'SuperMan' } |
チュートリアルの完了 | TUTORIAL_FINISH | なし |
ゲームのレベルアップ | UPDATE_LEVEL | { level: 2, power: 85, } |
ショップページの閲覧 | VIEW_CONTENT | { // 重要シナリオへのアクセス:ショップ item: 'Mall', } |
ゲーム内イベントの閲覧 | VIEW_CONTENT | { // 重要シナリオへのアクセス:イベント item: 'Activity', } |
たとえば、ゲームのレベルアップイベントを送信する場合
Dictionary<string, object> properties = new Dictionary<string, object>();
properties["level"] = 2;
properties["power"] = 85;
2TDAnalytics.Track("product_buy", properties);

