CocosCreator
最新バージョン:v1.4.0
更新日:2026-09-16
対応プラットフォーム:Web、WeChatミニゲーム、Alipayミニゲーム、Douyinミニゲーム、Android、iOS、HarmonyOS
リソースのダウンロード:ダウンロード
1. 概要
AE 4.4から、エンゲージモジュールに「クライアントトリガー型タスク」機能がリリースされました。アプリ内での新規ユーザー登録やキャラクター作成などのシナリオにおけるミリ秒単位のトリガーの要件に対応し、リアルタイムのA/B分流にも対応しています。クライアント側ではThinkingData SDKがAEのバックエンドと通信し、タスクの取得と計算を行います。
Cocos CreatorプロジェクトにThinkingData SDKを統合する必要があります。業務側はThinkingData SDKとのやり取りだけを考慮すればよく、AE管理画面のタスクの詳細を気にする必要はありません。
Web/ミニゲームはJSで実装されています。Android、iOS、HarmonyOSのネイティブ側は、JSBブリッジを介して各プラットフォームのネイティブSDKを呼び出します。JS層では一律にTDStrategyを使用し、ネイティブ側ではSDKがプラットフォームに応じてTDStrategyProxyApiを自動的に呼び出します。
2. 統合
2.1 SDKの手動統合
クライアントトリガー型には、次のThinkingData SDKが必要です:
| SDK名 | 説明 | バージョン要件 |
|---|---|---|
| TDAnalytics | データの収集と処理を行います | >= 3.8.0 |
| TDRemoteConfig | AE管理画面の設定情報を取得します | >= 1.3.1 |
- SDKを入手して解凍します。リリースパッケージの主なファイルは次のとおりです。
| ファイル | 用途 |
|---|---|
| tdstrategy.mg.cc.min.js | Cocos Creator JS SDK(assetsに配置し、通常のモジュールとしてimport) |
| tdstrategy.cc.d.ts | TypeScriptの型宣言 |
| android/TDStrategyProxyApi.java + TDStrategy.aar | Androidネイティブブリッジと依存関係 |
| ios/TDStrategyProxyApi.* + TDStrategy.framework | iOSネイティブブリッジと依存関係 |
| openharmony/TDStrategyProxyApi.ts + TDStrategy.har | HarmonyOSネイティブブリッジと依存関係 |
tdstrategy.mg.cc.min.jsをプロジェクトのassets/Scriptに、tdstrategy.cc.d.tsをassets/libsに配置します。データ収集SDK、構成センターSDKも同じ方法で配置します。- Android/iOS/HarmonyOS向けにビルドする場合は、まずCreatorで対応するネイティブプロジェクトを一度エクスポートしてから、以下の各プラットフォームの手順に従ってブリッジファイルをコピーする必要があります。JSファイルを配置するだけでは、ネイティブチャンネルを利用できません。
2.2 Androidネイティブの追加設定
まずCreatorでAndroidプロジェクトを一度エクスポート/ビルドし、native/engine/android/appが生成されていることを確認します。
TDStrategyProxyApi.javaをnative/engine/android/app/src/com/cocos/game/にコピーします。TDStrategy.aarをnative/engine/android/app/libs/にコピーします。データ収集/構成センターも統合する場合は、同じディレクトリに対応するAARも配置する必要があります。Creatorのデフォルトプロジェクトには通常implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])が含まれています。含まれていない場合は、app/build.gradleに追加します。app/proguard-rules.proにkeepルールを追加し、Releaseビルドの難読化後にブリッジクラスが見つからなくなるのを防ぎます。
-keep public class com.cocos.game.TDStrategyProxyApi { *; }
-keep class cn.thinkingdata.** { *; }
-dontwarn cn.thinkingdata.**
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
}
2.3 iOSネイティブの追加設定
まずCreatorでiOSプロジェクトを一度エクスポートし、native/engine/iosが生成されていることを確認します。同梱のframeworkはarm64実機向けです。実機またはiphoneos向けにビルドし、シミュレーター向けだけのビルドは行わないでください。
次のファイルをnative/engine/common/Classes/ThinkingAnalytics/ios/にコピーします:
TDStrategyProxyApi.hTDStrategyProxyApi.mmTDStrategy.framework
データ収集/構成センターSDKも統合する場合は、同じディレクトリにCocosCreatorProxyApi、ThinkingSDK.framework、ThinkingDataCore.framework、TDRemoteConfigProxyApi、TDRemoteConfig.frameworkも配置する必要があります。
次に、native/engine/ios/CMakeLists.txtを書き換えます。ブリッジのソースファイルをコンパイル対象に追加し、cc_ios_after_targetの後でframeworkをリンク・埋め込みし、あわせて-ObjCを追加します。
list(APPEND CC_COMMON_SOURCES
"${TE_IOS_DIR}/TDStrategyProxyApi.h"
"${TE_IOS_DIR}/TDStrategyProxyApi.mm"
)
target_link_libraries(${EXECUTABLE_NAME}
"${TE_IOS_DIR}/TDStrategy.framework"
)
target_link_options(${EXECUTABLE_NAME} PRIVATE "-ObjC")
set_target_properties(${EXECUTABLE_NAME} PROPERTIES
XCODE_ATTRIBUTE_FRAMEWORK_SEARCH_PATHS "$(inherited) ${TE_IOS_DIR}"
XCODE_EMBED_FRAMEWORKS "${TE_IOS_DIR}/TDStrategy.framework"
XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY "YES"
)
Cocos Creator 2.xはこのCMakeの書き方に対応していないため、Xcodeでソースファイル、Link Binary、Framework Search Paths、-ObjC、Embed Frameworksを手動で追加する必要があります。
2.4 HarmonyOSネイティブの追加設定
まずCreatorでHarmonyOSプロジェクトを一度エクスポートし、native/engine/harmonyos-next/entryが生成されていることを確認します。以下の手順が1つでも欠けると、実行時にブリッジクラスが見つからなかったり、HARのコンパイルが通らなかったりする可能性があります。
ブリッジファイルとHARをコピーします。TDStrategyProxyApi.tsをentry/src/main/ets/に、TDStrategy.harをentry/libs/にコピーします。データ収集/構成センターSDKも統合する場合は、対応するProxyとHARもコピーします。
HARの依存関係を宣言します。entry/oh-package.json5にローカルHARの依存関係を追加してから、ohpm installを実行します。
{
"dependencies": {
"@thinkingdata/strategy": "file:./libs/TDStrategy.har"
}
}
appContextを設定します。EntryAbility.etsのonCreateでglobalThis.appContextを設定します。ネイティブSDKの初期化にはこのコンテキストが必要です。
globalThis.abilityWant = want;
globalThis.appContext = this.context;
jsb.reflectionのランタイムソースを登録します。entry/build-profile.json5でarkOptions.runtimeOnlyを必ず設定してください。設定しないと、実行時にTDStrategyProxyApiが見つからないというエラーになります。
arkOptions: {
runtimeOnly: {
sources: [
'./src/main/ets/TDStrategyProxyApi.ts',
],
packages: [
'@thinkingdata/strategy',
],
},
}
データ収集/構成センターも統合する場合は、sourcesに対応するProxyを、packagesに@thinkingdata/analytics、@thinkingdata/remoteconfigを追加します。
useNormalizedOHMUrlを有効にし、APIバージョンを引き上げます。プロジェクトレベルのnative/engine/harmonyos-next/build-profile.json5でuseNormalizedOHMUrlを必ず有効にしてください。有効にしないと、bytecode HARを統合する際にhvigorが00306046エラーを報告します。現在の戦略HARのcompatibleSdkVersionは20のため、プロジェクトのcompatibleSdkVersionを6.0.0(20)に引き上げる必要があります。
"buildOption": {
"strictMode": {
"useNormalizedOHMUrl": true
}
}
cocos_workerのevalStringを処理します。戦略のトリガーコールバックは、ArkTSのメインスレッドからCocos Workerに戻ってJSを実行する必要があります。Creatorがエクスポートしたentry/src/main/ets/workers/cocos_worker.tsにはデフォルトでevalStringの分岐がないため、追加する必要があります。追加しないと、HarmonyOSでtriggerListenerを受け取れません。
case "evalString":
cocos.evalString(msg.param);
break;
3. 初期化
必ず先にTDAnalyticsを初期化してから、TDRemoteConfigとTDStrategyを初期化してください。3つとも同じappId/serverUrlを使用します。ネイティブ側では、データ収集SDKの設定でenableNative: trueを有効にすることをお勧めします。
import './Script/tdanalytics.mg.cocoscreator.min.js';
import './Script/tdstrategy.mg.cc.min.js';
TDAnalytics.init({
appId: 'AppId',
serverUrl: 'ServerUrl',
enableNative: true,
});
TDStrategy.init({
appId: 'AppId',
serverUrl: 'ServerUrl',
enableLog: true,
debugMode: 'debug',
triggerListener: function (result) {
}
});
TDStrategy.initの設定項目の説明:
| パラメータ | 必須 | 説明 |
|---|---|---|
| appId | はい | プロジェクトのAPP ID。TE管理画面の「プロジェクト管理」ページで確認できます |
| serverUrl | はい | サービスURL。データ収集プロジェクトと同じにします |
| enableLog | いいえ | ログを出力するかどうか。デフォルトはfalse |
| debugMode | いいえ | debugを渡すとDebugモードになります。Android/iOS/HarmonyOSのネイティブチャンネルでのみ有効です |
| triggerListener | いいえ | タスクがヒットしたときのコールバック。初回のトリガーを逃さないよう、init時に渡すことをお勧めします |
4. コールバックリスナーの設定
SDKの初期化時に、TDStrategy SDKにコールバックリスナーを設定します。
triggerListener: function (result) {
}
TDStrategy SDKのタスクトリガー結果:
| プロパティ名 | タイプ | 説明 |
|---|---|---|
| channelMsgType | String | チャンネルのメッセージタイプ |
| appId | String | AEプロジェクトのapp id |
| pushId | String | エンゲージタスクのチャンネル送信ID |
| taskId | String | エンゲージタスクのID |
| content | object | エンゲージタスクのプッシュ内容 |
| userParams | object | クライアントチャンネルのカスタムパラメータ |
| opsProperties | object | クライアントトリガー型タスクに付与されるチャンネル情報。リーチファネルイベントで返送するパラメータとして使用します。 |

