# C#SDK 利用ガイド
このガイドでは、C#SDK を使用してプロジェクトにアクセスする方法について説明します (opens new window)。GitHub で C#SDK のソースコードを入手できます。
最新バージョンバージョン: 1.3.1
更新時間は: 2021-04-22
C#SDK ダウンロードアドレス (opens new window)
# まず、SDK の統合と初期化
# 1.1 統合 SDK
C#SDK はサービス側で使用されます.NET Framework
のアプリケーション、ダウンロードSDK テキスト (opens new window)、解凍後 dll テキストを参照します。
先頭に次のコードを追加して SDK を導入します
using ThinkingData.Analytics
# 1.2 SDK の初期化
次の 3 つの方法で SDK インスタンスを取得できます
**(1)LoggerConsumer:**一括リアルタイムでローカルテキストを書き、デフォルトでは日を区切って、LogBus と組み合わせてデータアップロードする必要があり、使用を
//默认按天切分文件
ThinkingdataAnalytics ta = new ThinkingdataAnalytics(new LoggerConsumer(logDirectory));
//如果您想按小时切分文件,可如下初始化
// ThinkingdataAnalytics ta = new ThinkingdataAnalytics(new LoggerConsumer(logDirectory,LoggerConsumer.RotateMode.HOURLY));//按小时切分,无大小切分
// 调用SDK...
// 上报数据
ta.Track(accountId, distinctId, "Payment", properties);
// 调用SDK...
// 在关闭服务器前需要调用关闭接口
ta.Close();
受信パラメータはローカルフォルダアドレスを書き込むことです。LogBus の受信フォルダアドレスをここに設定するだけで、LogBus を使用してデータを
(2)BatchConsumer:一括でリアルタイムにサーバーにデータを転送し、転送ツールを組み合わせる必要がなく、データ損失のリスクがあるので、慎重に使用
ThinkingdataAnalytics ta = new ThinkingdataAnalytics(new BatchConsumer(serverURL, appid));
//如果您想内网传输,您可以如下初始化,false代表不压缩文件,默认gzip压缩
//ThinkingdataAnalytics ta = new ThinkingdataAnalytics(new BatchConsumer(serverURL, appid,false));
//如果你想批量上报,您可以如下初始化,现在默认是20条上报一次
//ThinkingdataAnalytics ta = new ThinkingdataAnalytics(new BatchConsumer(serverURL, appid, 100));
serverURL
は転送データの URL、appid
はプロジェクトの APP ID
クラウドサービスを使用している場合は、次の URL を入力してください
http://ta-receiver.thinkingdata.io
民営化された展開のバージョンを使用している場合は、次の URL を入力してください
http://数据采集地址
注意:バージョン 1.2.0 以前に次の URL を入力してください:
http://ta-receiver.thinkingdata.io/logagent
http://数据采集地址/logagent
**(3)DebugConsumer:**をリアルタイムで TA サーバーに転送し、転送ツールを組み合わせる必要はなく、データにエラーが発生した場合、データ全体がライブラリに入らず、詳細なエラー説明を返し、本番環境での使用を推奨
ThinkingdataAnalytics ta = new ThinkingdataAnalytics(new DebugConsumer(serverUrl,appId));
//如果您不想上传到TA库中,可如下初始化:
//ThinkingdataAnalytics ta = new ThinkingdataAnalytics(new DebugConsumer(serverUrl,appId,true));
serverURL
は転送データの URL、appid
はプロジェクトの APP ID
クラウドサービスを使用している場合は、次の URL を入力してください
http://ta-receiver.thinkingdata.io
を使用している場合は、次の URL を入力してください
http://数据采集地址
# 二、データを報告する
SDK の初期化が完了すると、track
を呼び出してイベントをアップロードできます。通常、ダースから数百の異なるイベントをアップロードする必要があります。TA バックグラウンドを初めて使用する場合は、いくつかの重要なイベントをアップロードすることをお勧めします。
どのようなイベントを送信する必要があるか疑問がある場合は、クイッククイックガイドください。
# 2.1 送信イベント
を呼び出してtrack
イベントをアップロードすることができます。イベントの属性と情報を送信する条件を設定することをお勧めします。
//设置未登录状态下的访客ID
string distinctId= "distinctId";
//设置登录后的账号ID
string accountId = "accountId";
Dictionary<string, object> properties= new Dictionary<string, object>();
// 设置用户的ip地址,TA系统会根据IP地址解析用户的地理位置信息,如果不设置的话,默认不上报
properties.Add("#ip", "123.123.123.123");
// 设置事件发生的时间,如果不设置的话,则默认使用为当前时间
properties.Add("#time", DateTime.Now);
//设置事件属性
properties.Add("Product_Name", "商品A");
properties.Add("Price", 30);
properties.Add("OrderId", "订单号abc_123");
List<string> list1 = new List<string>();
list1.Add("str1");
list1.Add("str2");
list1.Add("str3");
properties.Add("array",list1);
// 上传事件,包含账号ID与访客ID
ta.Track(accountId, distinctId, "Payment", properties);
// 您也可以只上传访客ID
// ta.Track(null, distinctId, "Payment", properties);
// 或者只上传账号ID
// ta.Track(accountId, null, "Payment", properties);
**注:**ビジター ID とアカウント ID がスムーズにバインドされることを保証するために、ゲームにビジター ID とアカウント ID が使用される場合は、両方の ID を同時にアップロードすることを強くお勧めします。そうしないと、アカウントが一致しない場合が発生し、ユーザーが計算を繰り返すことになります。具体的な ID バインドルールはユーザー識別ルールの章を参考ユーザー識別ルールしてください。
- イベントの名前はアルファベットのみで始まり、数字、文字、下線の「_」を含めることができ、長さは最大 50 文字で、文字の大文字と小文字には敏感ではない。
- イベント属性は
Dictionary<string, object>
型で、各要素は属性を表します - イベント属性
Key
は属性名で、string
型で、文字で始まることを規定し、数字、文字と下線「_」を含み、長さは最大 50 文字で、文字の大文字と小文字に敏感ではない - プロパティ値には、文字列、数値クラス、
bool
、DateTime
、List
。
# 2.2 パブリックイベントプロパティの設定
すべてのイベントに表示する必要があるいくつかのプロパティプロパティについては、SetPublicProperties
てパブリックイベントプロパティを設定できます。イベントを送信する前に、パブリックイベントプロパティを設定することをお勧めします。
// 设置公共事件属性
Dictionary<string, object> superProperties= new Dictionary<string, object>();
superProperties.Add("server_version", "1.2.3A");
superProperties.Add("server_name", "A1001");
ta.SetPublicProperties(superProperties);
// 设置事件属性
Dictionary<string, object> properties= new Dictionary<string, object>();
properties.Add("Product_Name", "商品A");
properties.Add("Price", 30);
properties.Add("OrderId", "订单号abc_123");
// 上传事件,事件中将会带有公共事件属性以及该事件本身的属性
ta.Track(accountId, distinctId, "Payment", properties);
/*
相当于进行下列操作
Dictionary<string, object> properties= new Dictionary<string, object>();
properties.Add("server_version", "1.2.3A");
properties.Add("server_name", "A1001");
properties.Add("Product_Name", "商品A");
properties.Add("Price", 30);
properties.Add("OrderId", "订单号abc_123");
ta.track(distinct_id,account_id,"Payment",properties)
*/
- 共通イベント属性は
Dictionary<string, object>
型で、各要素は属性を表します - 共通イベント属性
Key
は属性名で、string
型で、規定は文字で始まるだけで、数字、文字と下線「_」を含み、長さは最大 50 文字で、文字の大文字と小文字に敏感ではない - 共通イベントプロパティ値は、文字列、数値クラス、
bool
、DateTime
、list
。
呼び出した場合SetPublicPropperties
に設定された共通イベントプロパティがオーバーライドされます。パブリックイベントプロパティとtrackupload
イベントのプロパティの Key が重複する場合、イベントのプロパティはパブリックイベントプロパティを上書きします
// 设置公共事件属性
Dictionary<string, object> superProperties= new Dictionary<string, object>();
superProperties.Add("server_version", "1.2.3A");
superProperties.Add("server_name", "A1001");
ta.SetPublicProperties(superProperties);
// 再次设置公共事件属性,此时"server_name"的值变为"B9999"
superProperties.clear();
superProperties.Add("server_name","B9999");
ta.SetPublicProperties(superProperties);
// 设置事件属性
Dictionary<string, Object> properties= new Dictionary<string, object>();
properties.Add("server_version", "1.3.4");
properties.Add("Product_Name", "商品A");
properties.Add("Price", 30);
properties.Add("OrderId", "订单号abc_123");
// 上传事件,此时"server_version"的值为"1.3.4","server_name"的值为"B9999"
ta.Track(accountId, distinctId, "Payment", properties);
すべてのパブリックイベントプロパティを空にする場合は、ClearPublicProperties を呼び出します
。
# 三、ユーザー属性
TA プラットフォームで現在サポートされているユーザープロパティ設定インターフェイスはUserSet
、UserSetOnce
、UserAdd
、です
。
# 3.1 ユーザーセット
通常のユーザープロパティでは、UserSet
を呼び出して設定できます。インターフェイスを使用してアップロードされたプロパティは元のプロパティ値を上書きします。ユーザープロパティが存在しない場合は、新しいユーザープロパティが作成されます。
// 上传用户属性,"user_name"的值为"ABC"
Dictionary<string, object> properties= new Dictionary<string, object>();
properties.Add("user_name","ABC");
ta.UserSet(accountId,distinctId, properties);
properties.clear();
//再次上传用户属性,该用户的"user_name"被覆盖为"XYZ"
properties.Add("user_name","XYZ");
ta.UserSet(accountId,distinctId, properties);
UserSet
設定のユーザープロパティはDictionary<string, object>
型で、各要素はプロパティを表します- ユーザー属性
Key
は属性名で、string
タイプで、規定は文字で始まるだけで、数字、文字と下線「_」を含み、長さは最大 50 文字で、文字の大文字と小文字に敏感ではない - プロパティ値は、文字列、数値クラス、
bool
、DateTime
、list
。
# 3.2 User SetOnce
アップロードするユーザープロパティが一度設定されている場合は、UserSetOnce を呼び出してUserSetOnce
することができます。プロパティに値がある場合は無視されます。
// 上传用户属性,"user_name"的值为"ABC"
Dictionary<string, object> properties= new Dictionary<string, object>();
properties.Add("user_name","ABC");
ta.UserSetOnce(accountId,distinctId, properties);
properties.clear();
//上传用户属性,该用户的"user_name"已设置因此忽略该属性设置
//该用户的"user_age"没有被设置,因此设置值为18
properties.Add("user_name","XYZ");
properties.Add("user_age",18);
ta.UserSetOnce(accountId,distinctId, properties);
UserSetOnce
設定のユーザープロパティの種類と制限はUserSet
一致します。
# 3.3 UserAdd
数値型のプロパティをアップロードするときは、UserAdd
を呼び出してアキュムレータ操作を実行します。プロパティが設定されていない場合は、0 を割り当ててから計算します。負の値を入力します。減算操作と同じです。
//上传用户属性,给该用户的"TotalRevenue"属性与"VipLevel"属性分别加上30和1
Dictionary<string, object> properties= new Dictionary<string, object>();
properties.Add("TotalRevenue",30);
properties.Add("VipLevel",1);
ta.UserAdd(accountId,distinctId, properties);
UserAdd
設定のユーザープロパティの種類と制限はUserSet
一致しますが、数値型のユーザープロパティにのみ有効です。
# 3.4 ユーザー削除
を削除する場合は、UserDelete を呼び出しUserDelete
て削除すると、ユーザーのユーザープロパティを照会することはできなくなりますが、ユーザーが生成したイベントは引き続き照会でき
ta.UserDelete(accountId, distinctId);
# 3.5 UserUnSet
ユーザーのユーザープロパティの値を空にする必要がある場合は、UserUnset を呼び出して
空にします。
//删除这个用户的某个属性 必须是string类型的集合,例如:
List<string> list = new List<string>();
list.Add("nickname");
list.Add("age");
ta.UserUnSet(accountId, distinctId, list);
# 3.6 UserAppend
list 型にユーザープロパティ値を追加する場合は、UserAppend
を呼び出して、指定したプロパティを追加でき。
は、プロパティ
//user_append,追加集合属性
Dictionary<string, object> dictionary = new Dictionary<string, object>();
List<string> list = new List<string>(); //list里面的数据最后都会tostring
list.Add("true");
list.Add("test");
dictionary.Add("arrkey4",list);
ta.UserAppend(accountId,distinctId,dictionary);
# 四、その他の操作
# 4.1 データの即時提出
ta.Flush();
すぐに対応する受信機にデータを送信
# 4.2 SDK のシャットダウン
ta.Close();
sdk を閉じて終了し、サーバーを閉じる前にこのインターフェイスを呼び出して、キャッシュ内のデータが失わ
# V.関連するプリセットプロパティ
# 5.1 すべてのイベントのプリセットプロパティ
次のプリセットプロパティは、C#SDK のすべてのイベント(自動取得イベントを含む)に含まれるプリセットプロパティ
プロパティ名 | 中国語の | 説明 |
---|---|---|
#ip | IPアドレス | ユーザーのIPアドレスは、手動で設定する必要があり、TAはユーザーの地理的位置情報 |
#国 | 国 | ユーザーの国は、IPアドレスに基づいて生成されます |
#カントリーコード | 国コード | ユーザーがいる国の国コード(ISO 3166-1 alpha-2、つまり2大文字英字)は、IPアドレスに基づいて生成 |
#県 | 州 | ユーザーの州、IPアドレスに基づいて生成 |
#都市 | 都市 | ユーザーがいる都市は、IPアドレスに基づいて生成されます |
#lib | SDKタイプ | SDKにアクセスするタイプ(tga_csharp_sdkなど) |
#リブバージョン | SDKバージョン | C#SDKのバージョンにアクセスします |
# チェンジログ
# 1.3.1 2021-04-22
- LoggerConsumer 書き込み時の書き込みロック作成失敗の修正
# 1.3.0 2020-12-29
- 更新可能なイベントをサポートする新しい track_update インターフェイス
- 新しい track_overwrite インターフェイス、書き換え可能イベント
- #first_check_id プロパティを追加し、最初のイベントをサポート
- LoggerConsumer を最適化し、指定された生成テキストプレフィックス
- LoggerConsumer を最適化し、存在しないディレクトリの自動作成を追加
# v1.2.1 2020-03-16
- データがタイムリーにフラッシュされない問題
# v1.2.0 2020-02-13
- データ型は list 型
- ユーザーの配列型の属性追加をサポートする user_append インターフェイスを追加
- user_unset インターフェイスを追加し、ユーザー属性の削除をサポート
- BatchConsumer パフォーマンスの最適化:圧縮モードの設定、Base64 エンコーディングの削除
- DebugConsumer 最適化:サービス側でデータをより完全かつ正確に検証
# v1.1.0 2019-09-24
- デバッグインタフェースを容易にする DebugConsumer を追加
- LoggerConsumer を最適化し、時間ごとのログブックの分割をサポート
- LoggerConsumer を削除する単一テキストのデフォルトサイズは 1G です
- コードの最適化、null Times のバグの修正、安定性の向上
# v1.0.0 2019-07-09
- オンライン LoggerConsumer、BatchConsumer の基本機能