menu
Is this helpful?

# Cocos2d-x

TIP

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

Cocos2d-x SDK はiOS、Android、Mac、Windowsに対応しており、サイズは約6.8Mとなります。

最新バージョン: v2.0.1

更新時間: 2023-11-23

ソースコードSource Code (opens new window)SDKダウンロード (opens new window)

# SDK実装

  1. Cocos2d-x SDK (opens new window)リソースファイルをダウンロード&解凍して、ThinkingAnalytics フォルダーを Classes フォルダーに配置します
  2. CMakeLists.txt 以下の設定を入れます
list(APPEND GAME_SOURCE
     Classes/ThinkingAnalytics/Common/TDJSONObject.cpp
     )
list(APPEND GAME_HEADER
     Classes/ThinkingAnalytics/Common/TDJSONObject.h
     Classes/ThinkingAnalytics/Common/TDAnalytics.h
     )
if(ANDROID)
    list(APPEND GAME_SOURCE
         Classes/ThinkingAnalytics/Android/TDAnalytics.cpp
         )
elseif(WINDOWS)
    list(APPEND GAME_HEADER
         Classes/ThinkingAnalytics/Other/ThinkingSDKObject.h
         )
    list(APPEND GAME_SOURCE
         Classes/ThinkingAnalytics/Other/TDAnalytics.cpp
         )
elseif(MACOSX)
    list(APPEND GAME_HEADER
        Classes/ThinkingAnalytics/Other/ThinkingSDKObject.h
        )
    list(APPEND GAME_SOURCE
        Classes/ThinkingAnalytics/Other/TDAnalytics.cpp
        )
  1. Androidの構成設定
  • proj.android の app ディレクトリの下に libs フォルダーを追加し、libs フォルダーに thinkingsdk.aar を配置します
  • proj.android の app ディレクトリの下にある build.gradle に次の構成を追加します。
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
}

  1. iOSの構成設定
  • XCode を使用して iOS プロジェクトを開き、ThinkingAnalytics の下の iOS フォルダーを Classes/ThinkingAnalytics ディレクトリに直接ドラッグ アンド ドロップします。

  • Build Setting->Other Linker Flagsデバッグとリリースをそれぞれ-all_load追加します

  • Build Phases->Compile Sources中のTDAnalytics.mm -fobjc-arcを追加します

  • Build Setting - Header Search Paths に追加してください。

"$(SRCROOT)/../Classes/ThinkingAnalytics/iOS/ThinkingSDK.framework/Headers"

  • Build Setting - Framework Search Paths に追加してください。

"$(SRCROOT)/../Classes/ThinkingAnalytics/iOS"

  • Build Phases - Link Binary With Libraries

WebKit.framework, GameController.framework, MediaPlayer.framework

# 初期設定

#include "./ThinkingAnalytics/Common/TDAnalytics.h"
using namespace thinkingdata::analytics;
//Initialize SDK in the main thread 
//Method 1
TDAnalytics::init(TE_APP_ID, TE_SERVER_URL);
//Method 2
Config config(TE_APP_ID, TE_SERVER_URL);
TDAnalytics::init(config);

パラメータ説明:

  • APPID: プロジェクトのAPPID、TEプロジェクト管理画面にて取得可能
  • SERVER_URL: データ送信URL
    • SaaSの場合はプロジェクト管理→データアクセスURLにて確認してください
    • プライベート構築の場合は、データ送信URLを指定することが可能

Android 9.0 以降ではデフォルトで HTTP リクエストが制限されるため、必ず HTTPS プロトコルを使用してください。

# メイン機能

メイン機能を利用する前に、ユーザー識別ルールを確認してくだ;

SDKはゲストIDを自動で作成し、ローカルで保存される;ユーザーがログインする前に、ゲストIDを身分識別IDとして使われます。

注意:ゲストIDはユーザーがアプリを再インストール時にリセットされます。

# 3.1 アカウントIDを設置

ユーザーがログインする時に、loginを呼び出して、ユーザーのアカウントIDを設定できます。TEプラットフォームはアカウントIDを身分識別IDとしてlogoutを呼び出しする前までに保留します。loginを数回呼び出すと、前のアカウントIDが上書きされます。

// The login unique identifier of the user, corresponding to the #account_id in data tracking. #Account_id now is TE
TDAnalytics::login("TE");

Login 複数回呼び出すことができます。アカウント ID が以前に保存された ID と一致するかどうかを判断します。一致する場合、呼び出しは無視され、一致しない場合は以前の ID が上書きされます。

この方法ではログインイベントを送信されません

# 3.2 共通イベントプロパティ設定

共通イベントプロパティは全てのイベントに含まれるプロパティとなります。setSuperPropertiesを呼び出しして設定することできます。イベント送信する前に、共通イベントプロパティを設定しておいてください。

例えば:プレイヤーのレベル、戦闘力、所持資源などのプロパティ

TDJSONObject superProperties;
superProperties.setString("channel", "TE");//string
superProperties.setNumber("age",1);//number
superProperties.setBool("isSuccess",true);//boolean
superProperties.setDateTime("birthday","2020-01-02 10:52:52.290");//time

TDJSONObject object;
object.setString("key", "value");
superProperties.setJsonObject("object", object);// object

TDJSONObject object1;
object1.setString("key", "value");
vector<TDJSONObject> arr;  
arr.push_back(object1);
superProperties.setList("object_arr", arr); // array object

vector<string> arr1;
arr1.push_back("value");
superProperties.setList("arr",arr1);//array

TDAnalytics::setSuperProperties(superProperties);

共通イベントプロパティはキャッシュに保存され、Appを起動する度に呼び出す必要はありません。もし呼び出す場合はsetSuperProperties:以前設定した共通イベントプロパティは上書きされます。

  • イベントプロパティは TDJSONObjectタイプの場合は、エレメントごとにプロパティとして切り分けられます
  • Key は当プロパティの名称でstringタイプで、英文字と数字、 "_"を含め、最大50文字。TEシステムは一律で小英文字に統一されます
  • Value は当プロパティの値で、String, Number, Bloon, Time, object, array, list objectを対応しております。

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

# 3.3 自動収集イベントのOn/Off

クライアント SDKは一部イベントを自動収集することが可能で、実際業務状況に応じてon/offにしてください。以下は参考となります。

TDAnalytics::enableAutoTrack();

# 3.4 イベント送信

trackを呼び出してイベントの送信を行います。事前にデータプランをご用意の上、送信してください。以下はモデルコードとなります。例:アイテム購入

TDJSONObject eventProperties;
eventProperties.setString("product_name", "アイテム名");
TDAnalytics::track("product_buy",eventProperties);

イベント名はstringタイプで、英文字と数字、 "_"を含め、最大50文字まで入力可能です。

# 3.5 ユーザープロパティ設定

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

//the username now is TA
TDJSONObject properties;
properties.setString("username", "TA");
TDAnalytics::userSet(properties);
//the username now is TE
TDJSONObject newProperties;
newProperties.setString("username", "TE");
TDAnalytics::userSet(newProperties);

プロパティ形式の要件は、イベントプロパティと一致しています。

# コード例のまとめ

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

#include "./ThinkingAnalytics/Common/TDAnalytics.h"
using namespace thinkingdata;
if (privacy policy is authorized) {
      TDAnalytics::init(TE_APP_ID, TE_SERVER_URL);
      //if the user has logged in, the account ID of the user could be set as the unique identifier 
      TDAnalytics::login("TE");
      
      
      //After setting super properties, each event would have super properties
      TDJSONObject superProperties;
      superProperties.setString("channel", "TE");//string
      superProperties.setNumber("age",1);//number
      superProperties.setBool("isSuccess",true);//boolean
      superProperties.setDateTime("birthday","2020-01-02 10:52:52.290");//time

      TDJSONObject object;
      object.setString("key", "value");
      superProperties.setJsonObject("object", object);// object

      TDJSONObject object1;
      object1.setString("key", "value");
      vector<TDJSONObject> arr;  
      arr.push_back(object1);
      superProperties.setList("object_arr", arr); // array object

      vector<string> arr1;
      arr1.push_back("value");
      superProperties.setList("arr",arr1);//array 
      //set super properties
      TDAnalytics::setSuperProperties(superProperties);
      
      //Enable auto-tracking
      TDAnalytics::enableAutoTrack();
      
      //upload events
      TDJSONObject eventProperties;
      eventProperties.setString("product_name", "product name");
      TDAnalytics::track("product_buy",eventProperties);
      
      //Set user properties
      TDJSONObject userProperties;
      userProperties.setString("username", "TE");
      TDAnalytics::user_set(userProperties);
}