# Lua
最新バージョン:v2.0.0-beta.1
更新時間: 2023-10-08
ダウンロード: Source Code (opens new window)
# SDK実装
- Source Code (opens new window)をダウンロードし、ThinkingDataSdk.luaをプロジェクトのカテゴリに入れてください
- luarocksツールを使用してサードパーティのライブラリをインストールします。
luarocks install uuid
luarocks install luasec OPENSSL_DIR=[PATH]
luarocks install lua-cjson
- Logbusをインストール
TEシステムにより迅速かつ正確なデータを転送するために、SDK+LogBusの併用でサーバデータのデータレポートを推奨しております。
# 初期設定
SDKの初期設定のコード例:
local TdSDK = require "ThinkingDataSdk"
local LOG_DIRECTORY = "/tmp/data"
local consumer = TdSDK.TDLogConsumer("LOG_DIRECTORY", TdSDK.LOG_RULE.HOUR, 200, 500)
local sdk = TdSDK(consumer)
LOG_DIRECTORY
はローカルアクセスファイルのアドレスとなります。LogBusのモニターアドレスをこのアドレスに設定すれば自動でアップロードされます。
# メイン機能
ゲストIDとアカウントIDをうまく紐付けるために、もしゲーム内でゲストIDとアカウントID両方を使われる場合は、それらのIDを同時にアップロードするのを推奨しております。同時にアップロードしない場合は、ユーザーを重複にカウントされてしまう可能性があります。
# 3.1 イベント送信
track
を利用してイベントの送信を行います。事前にデータプランをご用意の上、送信してください。以下はモデルコードとなります。
local distinctId = "ABCDEFG123456789"
local accountId = "TE_10001"
local properties = {}
properties["#time"] = os.date("%Y-%m-%d %H:%M:%S")
properties["#ip"] = "192.168.1.1"
properties["Product_Name"] = "Shoes"
properties["Price"] = 30
properties["OrderId"] = "abc_123"
sdk:track(accountId, distinctId, "payment", properties)
properties = nil
- イベント名称はstringタイプで、英文字と数字、 "_"を含め、最大50文字
- Key は当プロパティの名称でstringタイプで、英文字と数字、 "_"を含め、最大50文字。TEシステムは一律で小英文字に統一されます
- Value は当プロパティの値で、String, Number, Bloon, Time, object, array, list objectを対応しております。
ユーザープロパティはイベントプロパティと一致する必要があります
# 3.2 ユーザープロパティを設定
一般のユーザープロパティに関しては、user_set
を利用して設定することができますが、 UserSetは元の値を上書きされます。本来該当プロパティに値がない場合は、プロパティが新規作成されます。以下はコード例となります。
local userSetProperties = {}
userSetProperties["user_name"] = "ABC"
sdk:userSet(accountId, distinctId, userSetProperties)
userSetProperties = {}
userSetProperties["user_name"] = "abc"
sdk:userSet(accountId, distinctId, userSetProperties)
# コード例のまとめ
以下のコード例で全ての操作が含まれます、以下の順で利用推奨しております。
local TdSDK = require "ThinkingDataSdk"
local LOG_DIRECTORY = "/tmp/data"
local consumer = TdSDK.LogConsumer(LOG_DIRECTORY)
local sdk = TdSDK(consumer)
local distinctId = "ABCDEFG123456789"
local accountId = "TE_10001"
local properties = {}
properties["#time"] = os.date("%Y-%m-%d %H:%M:%S")
properties["#ip"] = "192.168.1.1"
properties["Product_Name"] = "Shoes"
properties["Price"] = 30
properties["OrderId"] = "abc_123"
sdk:track(accountId, distinctId, "payment", properties)
local userSetProperties = {}
userSetProperties["user_name"] = "ABC"
sdk:userSet(accountId, distinctId, userSetProperties)
sdk.flush();