目录
此内容是否有帮助?

# 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, []}
 ]}.
  1. 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().