# Erlang
最新バージョン:1.2.4
更新時間:2022-11-17
ダウンロード: Source Code (opens new window)
# SDK 実装
# 1.1 v1.2.0 以降の新バージョンは、rebar3 環境を採用して引用
1.1: プロジェクトにrebar3環境を入れてください
1.2: rebar.config
を編集し、thinkingdata_analytics SDK にモディファイします。
{erlopts, [debuginfo,
%% it is necessary when use "lager"
{parsetransform, lagertransform}
]}.
{deps, [
%% add thinkingdata_analytics SDK
{thinkingdata_analytics, {git, "https://github.com/ThinkingDataAnalytics/erlang-sdk.git", {tag, "v1.2.4"}}}
]}.
{shell, [
%% Specify configuration file
{config, "config/sys.config"},
{apps, [app_name]}
]}.
コード実行:
rebar3 compile
1.3:プロジェクト内の設定ファイルをモディファイし、lager に対する設定を追加してください。
主には SDK 独自利用の sink を追加します。
[
%% lager configuration
{lager, [
{colored, true},
{log_root, "./log"}, %% system log path
%% add a sink that belongs to thinkingdata_analytics SDK, name is "ta_logger_lager_event"
{extra_sinks,
[
{ta_logger_lager_event,
[{handlers, [
{lager_file_backend, [
{file, "LOG_DIRECTORY"}, %% TE log file path
{level, info},
{formatter, lager_default_formatter},
{formatter_config, [message, "\n"]},
{size, 10485760}, %% log file size limit, default is 10Mb
{rotator, ta_lager_rotator} %% custom rotator of TE log file
]}]},
{async_threshold, 500},
{async_threshold_window, 50}
]
}]
}
]
}
].
Tips:SDK カテゴリ内ではフォーマットファイルがありますexample_sys.config
ご参照ください。
LOG_DIRECTORY
はローカルアクセスファイルのアドレスとなります。LogBus のモニターアドレスをこのアドレスに設定すれば自動でアップロードされます。
1.4:プロジェクト設定ファイルの中で起動パラメータを入れてください。
xxxx.app.src
ファイル中で SDK の起動項目を追加します。
{application, your_name,
[{description, "An OTP application"},
{vsn, "0.1.0"},
{registered, []},
{mod, {your_name_app, []}},
{applications,
[kernel,
stdlib,
thinkingdata_analytics %% add thinkingdata_analytics launch item
]},
{env,[]},
{modules, []},
{licenses, ["Apache-2.0"]},
{links, []}
]}.
- Logbus をインストール
TE システムにより迅速かつ正確なデータを転送するために、SDK + LogBus の併用でサーバデータのデータレポートを推奨しております。
# 初期設定
SDK の初期設定のコード例:
%% pre-init SDK
ta_consumer_log:init(),
%% init SDK with consumer
thinking_analytics_sdk:init(thinking_analytics_sdk:consumer_type_log()).
# メイン機能
ゲスト ID とアカウント ID をうまく紐付けるために、もしゲーム内でゲスト ID とアカウント ID 両方を使われる場合は、それらの ID を同時にアップロードするのを推奨しております。同時にアップロードしない場合は、ユーザーを重複にカウントされてしまう可能性があります。
# 3.1 イベント送信
track
を利用してイベントの送信を行います。事前にデータプランをご用意の上、送信してください。以下はモデルコードとなります。
thinking_analytics_sdk:track("account_id", "distinct_id", "EventName", #{"#ip" => "123.123.123.123", "#time" => os:timestamp()}).
- イベント名称は string タイプで、英文字と数字、 "_"を含め、最大 50 文字
- Key は当プロパティの名称で string タイプで、英文字と数字、 "_"を含め、最大 50 文字。TE システムは一律で小英文字に統一されます
- Value は当プロパティの値で、String, Number, Bloon, Time, object, array, list object を対応しております。
ユーザープロパティはイベントプロパティと一致する必要があります
# 3.2 ユーザープロパティを設定
一般のユーザープロパティに関しては、user_set
を利用して設定することができますが、 UserSet は元の値を上書きされます。本来該当プロパティに値がない場合は、プロパティが新規作成されます。以下はコード例となります。
thinking_analytics_sdk:user_set("account_id", "distinct_id", #{"age" => 18, "abc" => ["a", "b", "c"]}),
# コード例のまとめ
以下のコード例で全ての操作が含まれます、以下の順で利用推奨しております。
%% pre-init SDK
ta_consumer_log:init(),
%% init SDK with consumer
thinking_analytics_sdk:init(thinking_analytics_sdk:consumer_type_log()),
%% track event
thinking_analytics_sdk:track("account_id_Erlang", "distinct_logbus", "ViewProduct", #{"key_1" => "value_1", "key_2" => "value_2"}),
%% track event whit object model nesting
thinking_analytics_sdk:track("account_id_Erlang", "distinct_logbus", "ViewProduct", #{"custom_property_1" => [#{"key_1" => "value_1"}, #{"key_2" => "value_2"}, #{"key_3_list" => ["a", "b", #{"child_key" => "child_value"}]}]}),
%% time is must use by "ta_utils:format_time()"
thinking_analytics_sdk:track("account_id_Erlang", "distinct_logbus", "ViewProduct", #{"register_time" => ta_utils:format_time(os:timestamp())}),
thinking_analytics_sdk:close().