# 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の基本機能