菜单

快速集成

基本信息

SDK名称:热力引擎 Unreal SDK v1.0.0.0

开发者名称:汇量云(北京)科技有限公司

SDK版本号:1.0.0.0

主要功能:热力引擎是一站式增长分析与发行决策平台,致力于帮助开发者搭建便捷、高效的数据管理中台,洞察业务运营全链路数据,制定更优增长决策。热力引擎支持全球全渠道数据管理,帮助开发者实现归因分析、用户粒度 ROI 分析,能有效衡量渠道价值,为投放和变现策略调优提供全方位数据支持。同时,提供应用内埋点及参数管理,配合多种分析模型与 AB 测试功能,全面还原用户全生命周期旅程,挖掘用户需求及业务增长点,快速验证并推行产品迭代优化,为开发者提升业务运营效率,实现规模化增长赋能。

适用范围:适用于Android5.0(APILevel21)及以上的操作系统。

隐私政策链接: https://www.solar-engine.com/privacyPolicy.html

合规指南:详见本页面底部合规指南内容。

 

第一步:获取 Appkey

Appkey 查询路径:资产管理-应用管理-16位 Appkey(即应用 ID)。

文章图片

第二步:获取 SDK

2.1  获取SEAnalytics插件

 

如果您创建的产品数据存储区域是中国大陆,请下载:  solarengine_unreal_sdk_cn_v1.0.0.0

如果您创建的产品数据存储区域是非中国大陆,请下载: solarengine_unreal_sdk_us_v1.0.0.0

 

 

第三步:集成 SDK

  • 将解压后的SEAnalytics文件放入工程的Plugins目录下,如果 Plugins 目录不存在,首先在项目根目录下创建 Plugins 目录,然后将 SEAnalytics 目录放入其中
  • 重启 Unreal Editor
    • 打开 编辑 > 插件,在项目 Analytics 类别下,启用 SEAnalytics
  • 再次重启 Unreal Editor
  • 如果您希望直接在 C++ 代码中使用 SEAnalytics 接口,需要在您项目的 *.Build.cs 文件中添加以下内容:
PrivateDependencyModuleNames.AddRange(new string[] { "SEAnalytics" });
  • 并且,在您希望使用 SDK 的文件中引用 SEAnalytics.h 头文件: 
#include "SEAnalytics.h"

3.1  Android配置

如果打包时需要增加混淆,请将下方代码增加到混淆配置文件中

-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.**{*;}

3.2 iOS配置

支持Xcode版本:14.0或更高

适用范围:适用于 iOS 11.0 及以上的操作系统

 

添加 SDK 所需依赖框架

 

使用 Security.framework 来存储设备标识

使用 CoreTelephony.framework 来获取运营商信息

使用 AdSupport.framework 来获取 Advertising Identifier 信息

使用 SystemConfiguration.framework 来检查当前网络环境

使用 libsqlite3.dylib 用来存储数据

使用 AdServices.framework 获取广告归因数据
(如果需要使用 ASA 归因,务必添加 AdServices.framework 依赖,否则无法获取归因结果)

第四步:预初始化

在应用安装后首次冷启动时,需要先预初始化 SDK,预初始化时 SDK 不采集任何个人信息也不会向热力引擎上报数据

方法示例

static void preInit(const FString& appkey);

调用示例

USEAnalytics::preInit("开发者申请的appkey")

第五步:初始化

方法示例

static void init(
		const FString& appkey,
		const FSEConfig& config = FSEConfig());

参数说明

参数名 参数含义 参数类型 是否必传
appkey 第一步获取的 appkey String
seConfig SDK 配置项 SEConfig

SEConfig 参数说明

参数名称 参数含义 参数类型 是否必传
logEnabled 是否开启日志打印,默认为关闭状态 bool
isGDPRArea 是否为GDPR区域,默认为false bool
adPersonalizationEnabled 用户是否允许Google将其数据用于个性化广告,开发者自定义,不设置则默认不上报该字段,只有Android调用有效,iOS没有此字段,无需设置此字段 bool
adUserDataEnabled 用户是否同意将其数据发送到Google,开发者自定义,不设置则默认不上报该字段,只有Android调用有效,iOS没有此字段,无需设置此字段 bool
isEnable2GReporting 是否允许2G上报数据。默认为false bool
isDebugModel 是否开启Debug调试模式,默认为关闭状态 bool
isCoppaEnabled 是否支持coppa合规。默认为false bool
isKidsAppEnabled 是否支持Kids App。默认为false bool
attAuthorizationWaitingInterval iOS首次上报事件支持设置ATT授权等待,最多支持等待120秒. 设置等待后SDK会等用户ATT授权或等待超时才上报Install等事件。
单位:秒
int
fbAppID 如果海外开发者需要用到meta归因,此处设置meta appid,只有Android调用有效,iOS没有此字段,无需设置此字段 string
deferredDeeplinkenable
是否开启延迟Deeplink, 默认false关闭 bool

 

调用示例

FSEConfig config;
config.logEnabled = true;                    // 开启调试日志
USEAnalytics::init("开发者申请的appkey", config);

监听初始化回调

在原有初始化方法的基础上新增监听初始化回调的方法

参数说明

参数名称 参数含义 参数类型 是否必传
appKey 应用的appKey,需要联系商务人员从热力引擎后台获取 string
seConfig 热力引擎SDK配置项 SEConfig

 

调用示例

//初始化
USEAnalytics::preInit("开发者申请的appkey")   //必须要先调用预初始化
FSEConfig config;
seConfig.logEnabled = true;
config.initCompletedCallback = FInitCompletedCallback::CreateLambda([this](int32 code)
{
	if (code == 0)
	{
		UE_LOG(LogTemp, Log, TEXT("收到初始化成功回调"));
	}
	else
	{
		UE_LOG(LogTemp, Warning, TEXT("收到初始化失败回调, code=%d"), code);
	}
});
USEAnalytics::init("开发者申请的appkey", config);

初始化回调 code 码:

0 初始化成功
101 SDK未预初始化
102 appkey非法
103 context为null(仅Android生效)
104 distinct_id生成失败(仅Android生效)

第六步:获取归因回调信息

SDK提供获取归因结果信息接口,开发者可使用归因信息做埋点等逻辑处理

SDK提供两种方式获取归因结果信息

  • 设置归因结果回调:当SDK获取归因结果成功或者失败时会给出回调(此接口为异步回调)
  • 直接获取归因结果:直接从SDK缓存中获取归因结果,SDK还没归因结果时直接返回null(此接口为同步返回)

 

6.1 设置归因结果回调

方法示例

struct FSEConfig
{
...
FAttributionCallback attributionCallback;
...

}

 

示例代码

FSEConfig config;
config.attributionCallback = FAttributionCallback::CreateLambda([this](FSEAttributionData attributionData)
{
	if (attributionData.code == 0)
	{
		if (attributionData.data.IsValid())
		{
			 FString JsonString;
                    TSharedPtr<FJsonObject> AttributionJson=attributionData.data;
   TSharedRef<TJsonWriter<TCHAR, TPrettyJsonPrintPolicy<TCHAR>>> Writer =
       TJsonWriterFactory<TCHAR, TPrettyJsonPrintPolicy<TCHAR>>::Create(&JsonString);

   FJsonSerializer::Serialize(AttributionJson.ToSharedRef(), Writer);

   UE_LOG(SEUserWidget, Log, TEXT("[SolarEngine 归因信息]\n%s"), *JsonString);
		}
		else
		{
			UE_LOG(LogTemp, Warning, TEXT("Attribution data is invalid."));
		}
	}
	else
	{
		UE_LOG(LogTemp, Warning, TEXT("Attribution callback failed with code: %d"), attributionData.code);
	}
});
USEAnalytics::init("开发者申请的appkey", config);

 

6.2 直接获取归因结果回调

方法示例

static TSharedPtr<FJsonObject> getAttributionData();

示例代码

TSharedPtr<FJsonObject> AttributionJson = USEAnalytics::getAttributionData();
if (AttributionJson.IsValid())
{
FString JsonString;

    TSharedRef<TJsonWriter<TCHAR, TPrettyJsonPrintPolicy<TCHAR>>> Writer =
        TJsonWriterFactory<TCHAR, TPrettyJsonPrintPolicy<TCHAR>>::Create(&JsonString);

    FJsonSerializer::Serialize(AttributionJson.ToSharedRef(), Writer);

    UE_LOG(SEUserWidget, Log, TEXT("[SolarEngine 归因信息]\n%s"), *JsonString);
}
else
{
	UE_LOG(LogTemp, Warning, TEXT("[SolarEngine] AttributionJson is null"));
}

 

6.3 归因结果示例

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

 

 

 


最近修改: 2025-12-01Powered by