目录
此内容是否有帮助?

# Golang

::: Tips

実装する前にデータアクセスの準備を確認しておいてください。

:::

最新バージョン:1.6.7

更新時間:2022-11-10

ダウンロード:Source Code (opens new window)

# SDK実装

  1. 2種のSDK実装方法に対応しています

方法1:以下のコードで最新版のGolang SDKを取得

# install SDK
go get github.com/ThinkingDataAnalytics/go-sdk/thinkingdata

# update SDK
go get -u github.com/ThinkingDataAnalytics/go-sdk/thinkingdata

方法2:Moduleモード

//Introduce thinkingdata at the beginning of the code file
import        "github.com/ThinkingDataAnalytics/go-sdk/thinkingdata"

# Pull out the latest SDK module
go mod tidy
  1. Logbusをインストール

TEシステムにより迅速かつ正確なデータを転送するために、SDK+LogBusの併用でサーバデータのデータレポートを推奨しております。

# 初期設定

以下はSDKの初期設定のフォーマットコードとなります:

config := thinkingdata.LogConfig{
   Directory: LOG_DIRECTORY
}
// create logConsumer
consumer, _ := thinkingdata.NewLogConsumerWithConfig(config)
// init TE instance
te := thinkingdata.New(consumer)

LOG_DIRECTORYはローカルアクセスファイルのアドレスとなります。LogBusのモニターアドレスをこのアドレスに設定すれば自動でアップロードされます。

# メイン機能

ゲストIDとアカウントIDをうまく紐付けるために、もしゲーム内でゲストIDとアカウントID両方を使われる場合は、それらのIDを同時にアップロードするのを推奨しております。同時にアップロードしない場合は、ユーザーを重複にカウントされてしまう可能性があります。

# 3.1 イベント送信

trackを利用してイベントの送信を行います。事前にデータプランをご用意の上、送信してください。以下はモデルコードとなります。

accountId := "te_account_id"
distinctId := "te_distinct_id"
properties := map[string]interface{}{
   // Set the user's ip address, and TE will analyze the user's geographical location information according to the IP address
   "#ip":       "123.123.123.123",
   "channel":   "te",       // string
   "age":       1,          // number
   "is_success": true,      // bool
   "birthday":  time.Now(), // time
   // object
   "object": map[string]interface{}{
      "key": "value",
   }, 
   // array object
   "objectArr": []interface{}{
      map[string]interface{}{
         "key": "value",
      },
   },
   "arr":     []string{"value"}, // array
}

err := te.Track(accountId, distinctId, "payment", properties)
  • イベント名称はstringタイプで、英文字と数字、 "_"を含め、最大50文字
  • Key は当プロパティの名称でstringタイプで、英文字と数字、 "_"を含め、最大50文字。TEシステムは一律で小英文字に統一されます
  • Value は当プロパティの値で、String, Number, Bloon, Time, object, array, list objectを対応しております。

ユーザープロパティはイベントプロパティと一致する必要があります

# 3.2 ユーザープロパティを設定

一般のユーザープロパティに関しては、user_setを利用して設定することができますが、 UserSetは元の値を上書きされます。本来該当プロパティに値がない場合は、プロパティが新規作成されます。以下はコード例となります。

// username is TA
err := te.UserSet("accountId", "distinctId", map[string]interface{}{
   "user_name": "TA",
})
// username is TE
err = te.UserSet("accountId", "distinctId", map[string]interface{}{
   "user_name": "TE",
})

# コード例のまとめ

以下のコード例で全ての操作が含まれます、以下の順で利用推奨しております。

//LOG_DIRECTORY is the local folder address
config := thinkingdata.LogConfig{
   Directory: LOG_DIRECTORY,
}
// init consumer
consumer, _ := thinkingdata.NewLogConsumerWithConfig(config)

te := thinkingdata.New(consumer)

accountId := "te_account_id"
distinctId := "te_distinct_id"
properties := map[string]interface{}{
   //Set the user's ip address, and TE will analyze the user's geographical location information according to the IP address
   "#ip":       "123.123.123.123",
   "channel":   "te",       // string
   "age":       1,          // number
   "isSuccess": true,       // bool
   "birthday":  time.Now(), // time
   // object
   "object": map[string]interface{}{
      "key": "value",
   }, 
   // array object
   "objectArr": []interface{}{
      map[string]interface{}{
         "key": "value",
      },
   },
   "arr":     []string{"value"}, // array
}
err := te.Track(accountId, distinctId, "payment", properties)

// set user properties
err := te.UserSet("accountId", "distinctId", map[string]interface{}{
   "user_name": "TE",
})

//Calling the flush API will immediately write the data to the file. 
//In the production environment, pay attention to avoid IO or network overhead caused by frequent calls to flush
te.Flush()