菜单

快速集成

基本信息

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

一、核心功能开关配置

控制 SDK 核心业务能力的启用 / 停用,直接决定归因、分析等核心服务是否生效。注:关闭相关核心功能开关将影响数据上报链路,您将无法在热力引擎后台正常使用该模块的全部功能。
 
参数名称 参数含义 参数类型 是否必传
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);

「新版」直接获取归因结果-方法示例(推荐)

除了在初始化时添加归因回调,也可业务后续主动调用 API 读取归因结果。
// 直接获取拉新归因结果
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);
}
 
 

归因结果示例

  归因errorCode 描述及 归因结果详情见:归因结果详情

 

「旧版」回调获取归因结果-方法示例(即将下线)  

SolarEngineAPI::setAttributionDataCallback([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; // 开启调试日志
SolarEngineAPI::init(seAppKey, config);

 

直接获取归因结果

AttributionData attr = SolarEngineAPI::getAttributionData();
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 if (attr.code == -1) {
     // 还未获取到归因数据
    CCLOG("[SE] AttributionData: not data .");
} else {
    CCLOG("[SE] AttributionData: fail code=%d",attr.code);
}

  

最近修改: 2026-09-08Powered by