基本信息
SDK名称:热力引擎 Cocos2d-x SDK v1.0.3
开发者名称:汇量云(北京)科技有限公司
SDK版本号:1.0.3
主要功能:热力引擎是一站式增长分析与发行决策平台,致力于帮助开发者搭建便捷、高效的数据管理中台,洞察业务运营全链路数据,制定更优增长决策。热力引擎支持全球全渠道数据管理,帮助开发者实现归因分析、用户粒度 ROI 分析,能有效衡量渠道价值,为投放和变现策略调优提供全方位数据支持。同时,提供应用内埋点及参数管理,配合多种分析模型与 AB 测试功能,全面还原用户全生命周期旅程,挖掘用户需求及业务增长点,快速验证并推行产品迭代优化,为开发者提升业务运营效率,实现规模化增长赋能。
适用范围:适用于Android5.0(APILevel21)及以上的操作系统。
隐私政策链接: https://www.solar-engine.com/privacyPolicy.html
合规指南:详见本页面底部合规指南内容。
第一步:获取 Appkey
Appkey 查询路径:资产管理-应用管理-16位 Appkey(即应用 ID)。

第二步:获取 SDK
如果您创建的产品数据存储区域是中国大陆,请下载: SolarEngineSDK-Cocos2dx-CN-1.0.3
如果您创建的产品数据存储区域是非中国大陆,请下载: SolarEngineSDK-Cocos2dx-US-1.0.3
第三步:集成 SDK
集成SolarEngineSDK
把下载好的SolarEngineSDK整个目录放入 Classes/ 目录下

配置CMakeLists
在 CMakeLists.txt 中加入以下配置
list(APPEND GAME_SOURCE
Classes/SolarEngineSDK/Common/SEJSONObject.cpp
)
list(APPEND GAME_HEADER
Classes/SolarEngineSDK/Common/SEJSONObject.h
Classes/SolarEngineSDK/Common/SolarEngineAPI.h
)
if(ANDROID)
list(APPEND GAME_SOURCE
Classes/SolarEngineSDK/Android/SolarEngineAPI.cpp
)
elseif(APPLE)
if(IOS)
list(APPEND GAME_HEADER
Classes/SolarEngineSDK/Common/SolarEngineAPI.h
)
list(APPEND GAME_SOURCE
Classes/SolarEngineSDK/iOS/SolarEngineAPI.mm
)
endif()
endif()
if(APPLE)
elseif(IOS)
set_xcode_property(${APP_NAME} OTHER_LDFLAGS "$(inherited) -ObjC")
endif()
endif()
Android 配置
添加SDK所需依赖框架:
添加SolarEngine Android SDK 依赖
使用Android Studio 打开Android 项目编译
maven 仓库配置
需要在项目根目录的 build.gradle 文件中添加 maven 仓库配置,具体配置如下:
allprojects {
repositories {
google()
jcenter()
// SolarEngine SDK仓库地址
maven { url "https://maven-android.solar-engine.com/repository/se_sdk_for_android/" }
maven { url "https://developer.huawei.com/repo/" }
maven { url "https://developer.hihonor.com/repo/" }
maven { url 'https://artifact.bytedance.com/repository/pangle'}
}
}

请将下方代码添加到 project 的 build.gradle 中
中国大陆,请使用大陆版SDK
implementation 'com.reyun.solar.engine.china:solar-engine-core:1.3.4'
非中国大陆,请使用海外版SDK
implementation 'com.reyun.solar.engine.oversea:solar-engine-core:1.3.4'

3、添加SolarEngine Android SDK Cocos2d-x Wrapper 文件
把下载好的SolarEngineSDK/Android/com/solar/engine/SolarEngineCocosAPI.java文件放在项目的proj.android/app/src/目录下
注:/com/solar/engine/SolarEngineCocosAPI.java 整个目录文档一起放

如果打包时需要增加混淆,请将下方代码增加到混淆配置文件中
-keep class com.reyun.** {*; }
-keep class route.**{*;}
-keep interface com.reyun.** {*; }
-keep interface route.**{*;}
-dontwarn com.reyun.**
-dontwarn org.json.**
-keep class org.json.**{*;}
# Google lib库
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
java.lang.String getId();
boolean isLimitAdTrackingEnabled();
}
-keep public class com.android.installreferrer.** { *; }
# 如果使用到了获取oaid插件,请添加以下混淆策略
-keep class com.huawei.hms.**{*;}
-keep class com.hihonor.**{*;}
iOS 配置
支持Xcode版本:14.0或更高
适用范围:适用于 iOS 11.0 及以上的操作系统。
1、编译出 iOS 项目
2 把 iOS SDK 添加到Cocos2d-x Xcode项目中

点击Finish

添加 SDK 所需依赖框架
使用 Security.framework 来存储设备标识
使用 CoreTelephony.framework 来获取运营商信息
使用 AdSupport.framework 来获取 Advertising Identifier 信息
使用 SystemConfiguration.framework 来检查当前网络环境
使用 libsqlite3.dylib 用来存储数据
使用 AdServices.framework 获取广告归因数据
(如果需要使用 ASA 归因,务必添加 AdServices.framework 依赖,否则无法获取归因结果)
添加方法:
在工程目录中,选择 TARGETS-->Build Phases-->Link Binary With Libraries-->+ -->选择 Security.framework、CoreTelephony.framework、AdSupport.framework、SystemConfiguration.framework、libsqlite3.tbd、AdServices.framework等库文件。
第四步:预初始化
在应用安装后首次冷启动时,需要先预初始化 SDK,预初始化时 SDK 不采集任何个人信息也不会向热力引擎上报数据
#include "./SolarEngineSDK/Common/SolarEngineAPI.h"
#include "./SolarEngineSDK/Common/SEJSONObject.h"
// Classes/SolarEngineSDK/Common/SolarEngineAPI.h 对应此文件
SolarEngineAPI::preInit(seAppKey);
第五步:初始化
SDK初始化参数
| 参数名称 | 参数含义 | 参数类型 | 是否必传 |
|---|---|---|---|
| appKey | 开发者在热力引擎后台申请的Appkey | string | 是 |
| config | sdk初始化配置 | Object | 是 |
config
一、核心功能开关配置
| 参数名称 | 参数含义 | 参数类型 | 是否必传 |
|---|---|---|---|
| enableAttribution | 是否开启归因服务,默认开启。关闭后将停用全部归因相关能力,无法获取归因结果、延迟deeplink、deeplink等相关服务;若同时关闭分析服务,SDK 将停止上报所有数据。 | boolean | 否 |
| enableAnalytics | 是否开启分析服务,默认开启。关闭后 A/B 测试、在线参数等所有分析类功能均无法使用;若同时关闭归因服务,SDK 将不再上报任何数据。 | boolean | 否 |
二、辅助功能开关
| 参数名称 | 参数含义 | 参数类型 | 是否必传 |
|---|---|---|---|
| logEnabled | 是否开启日志打印,默认为关闭状态 | boolean | 否 |
| isGDPRArea | 是否为GDPR区域,默认为false | boolean | 否 |
| adPersonalizationEnabled | 用户是否允许Google将其数据用于个性化广告,开发者自定义,不设置则默认不上报该字段,只有Android调用有效,iOS没有此字段,无需设置此字段 | boolen | 否 |
| adUserDataEnabled | 用户是否同意将其数据发送到Google,开发者自定义,不设置则默认不上报该字段,只有Android调用有效,iOS没有此字段,无需设置此字段 | boolean | 否 |
| fbAppID | 如果海外开发者需要用到meta归因,此处设置meta appid,只有Android调用有效,iOS没有此字段,无需设置此字段 | string | 否 |
| attAuthorizationWaitingInterval | iOS首次上报事件支持设置ATT授权等待,最多支持等待120秒. 设置等待后SDK会等用户ATT授权或等待超时才上报Install等事件。 单位:秒。 Android 没有此字段 |
number | 否 |
| isDebugModel | 是否开启Debug调试模式,默认为关闭状态 | boolean | 否 |
| isCoppaEnabled | 是否支持coppa合规。默认为false | boolean | 否 |
| isKidsAppEnabled | 是否支持Kids App。默认为false | boolean | 否 |
| enableDelayDeeplink | 是否开启延迟deeplink, 默认为false | boolean | 否 |
| remoteConfig | 在线参数初始化配置 | SEUniRemoteConfig | 否 |
| enableSeparatedAttribution | 是否启用新版归因功能,启动后能快速获取对应的归因结果。 | boolean | 否 |
三、数据采集开关
控制ipv6、OAID、UA等参数等数据是否采集。注:关闭对应数据采集参数后,将会影响归因、分析模块的数据能力,您将无法在热力引擎后台正常使用相关功能。
| 参数名称 | 参数含义 | 参数类型 | 是否必传 |
|---|---|---|---|
| enableLanguage | 是否采集设备语言, 不采集设置为false,默认 true(采集) | boolean | 否 |
| enableLocale | 是否采集设备所在地区, 不采集设置为false,默认 true(采集) | boolean | 否 |
| enableTimeZone | 是否采集设备所在时区, 不采集设置为false,默认 true(采集) | boolen | 否 |
| enableScreenWH | 是否采集屏幕宽度/屏幕高度, 不采集设置为false,默认 true(采集) | boolean | 否 |
| enableNetworkType | 是否采集网络状态, 不采集设置为false,默认 true(采集) | string | 否 |
| enableUA | 是否采集UA, 不采集设置为false,默认 true(采集) | number | 否 |
| enableIPV6 | 是否采集ipv6地址,默认为YES,采集 (仅中国大陆支持) | boolean | 否 |
remoteConfig参数说明(在线参数功能)
| 参数名称 | 参数含义 | 参数类型 | 是否必传 |
|---|---|---|---|
| enable | 是否启用在线参数SDK,默认为关闭状态,必传字段 | boolean | 否 |
| mergeType |
SDK配置合并策略,默认情况下服务端配置跟本地缓存配置合并,具体释义参考下方参数解释,可选字段 0: app首次启动或版本更新时, 使用服务端配置跟用户默认配置合并,此方法可以清除本地缓存配置 1: 使用服务端配置跟用户本地已有缓存配置合并,在线参数SDK默认合并策略 |
number | 否 |
| customIDEventProperties | 自定义ID事件属性值,跟用户在后台设置的使用自定义ID事件属性值匹配对应,可选字段 | object | 否 |
| customIDUserProperties | 自定义ID用户属性值,跟用户在后台设置的使用自定义ID用户属性值匹配对应,可选字段 | object | 否 |
初始化示例
#include "./SolarEngineSDK/Common/SolarEngineAPI.h"
// Classes/SolarEngineSDK/Common/SolarEngineAPI.h 对应此文件
// 监听初始化回调
SolarEngineAPI::setInitCallback([this](int resultCode) {
if (resultCode == 0) {
CCLOG("SolarEngine SDK InitCallback success");
} else {
CCLOG("SolarEngine SDK InitCallback fail,code: %d", resultCode);
}
});
SECConfig config;
config.enableLog = true; // 开启调试日志
SolarEngineAPI::init(seAppKey, config);
初始化回调 code 码:
| 0 | 初始化成功 |
| 101 | SDK未预初始化 |
| 102 | appkey非法 |
| 103 | context为null(仅Android生效) |
| 104 |
distinct_id生成失败(仅Android生效) |
获取归因回调信息
「新版」通过回调获取归因结果-方法示例(推荐)
// 监听拉新归因
SolarEngineAPI::setUAAttributionDataCallback([this](const AttributionData &attr) {
if (attr.code == 0) {
CCLOG("[SE] AttributionData: success , install_time=%s, channel_name=%s, origin_data_str=%s",
attr.code, attr.install_time.c_str(), attr.channel_name.c_str(),
attr.origin_data_str.c_str());
} else {
CCLOG("[SE] AttributionData: fail code=%d",
attr.code);
}
});
// 监听拉活归因
SolarEngineAPI::setREAttributionDataCallback([this](const AttributionData &attr) {
if (attr.code == 0) {
CCLOG("[SE] AttributionData: success , install_time=%s, channel_name=%s, origin_data_str=%s",
attr.code, attr.install_time.c_str(), attr.channel_name.c_str(),
attr.origin_data_str.c_str());
} else {
CCLOG("[SE] AttributionData: fail code=%d",
attr.code);
}
});
SECConfig config;
config.enableLog = true; // 开启调试日志
config.enableSeparatedAttribution = true; // 开启新版归因,不开启则没法收到上面回调
SolarEngineAPI::init(seAppKey, config);
「新版」直接获取归因结果-方法示例(推荐)
// 直接获取拉新归因结果
AttributionData uaAttr = SolarEngineAPI::getUAAttributionData();
if (uaAttr.code == 0) {
CCLOG("[SE] AttributionData: ua success , install_time=%s, channel_name=%s, origin_data_str=%s",
uaAttr.code, uaAttr.install_time.c_str(), uaAttr.channel_name.c_str(),
uaAttr.origin_data_str.c_str());
} else if (uaAttr.code == -1) {
// 还未获取到归因数据
CCLOG("[SE] AttributionData: ua not data .");
} else {
CCLOG("[SE] AttributionData: ua fail code=%d",uaAttr.code);
}
// 直接获取拉活归因结果
AttributionData reAttr = SolarEngineAPI::getREAttributionData();
if (reAttr.code == 0) {
CCLOG("[SE] AttributionData: ua success , install_time=%s, channel_name=%s, origin_data_str=%s",
reAttr.code, reAttr.install_time.c_str(), reAttr.channel_name.c_str(),
reAttr.origin_data_str.c_str());
} else if (reAttr.code == -1) {
// 还未获取到归因数据
CCLOG("[SE] AttributionData: ua not data .");
} else {
CCLOG("[SE] AttributionData: ua fail code=%d",reAttr.code);
}