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

第二步:导入 SDK
两种方式导入SDK
方式一:通过鸿蒙仓库导入SDK
进入工程entry目录,执行以下命令:
ohpm install @solarengine/core
方式二:通过本地har包导入SDK
1.下载SDK:SolarEngine-Harmony-v1.8.0
2.将下载的SolarEngineCorex.x.x.har放入工程libs目录,执行以下命令:
//your_project_path/entry/libs/SolarEngineCorex.x.x.har是har包路径
ohpm install your_project_path/entry/libs/SolarEngineCorex.x.x.har
第三步:配置权限
在项目中找到项目配置文件 module.json5,加入如下权限:
ohos.permission.INTERNET//必须权限,允许应用发送网络请求。
ohos.permission.GET_NETWORK_INFO//必须权限,允许应用检测网络状态。
ohos.permission.APP_TRACKING_CONSENT//必须权限,允许应用获取oaid。注:须在获得此权限后再初始化sdk,如果缺少此权限,会影响设备归因
ohos.permission.STORE_PERSISTENT_DATA//必须权限,允许应用卸载时保留distinctid,用于设备归因。
第四步:配置混淆
如果打包时需要开启混淆配置,请将下方代码增加到混淆配置文件中
-keep
./oh_modules/@solarengine/core
第五步:预初始化 SDK
在应用安装后首次冷启动时,需要先预初始化 SDK,预初始化时 SDK 不采集任何个人信息也不会向热力引擎上报数据,
请请确保用户同意《隐私政策》并且 SDK 预初始化成功后,再调用初始化函数正式初始化 SDK
方法示例
public static preInit(context: Context, appKey: string)
参数说明
| 参数名称 | 参数含义 | 参数类型 | 是否必传 |
| context | 应用程序上下文对象 | Context | 是 |
| appKey | 第一步获取的 Appkey | string | 是 |
调用示例
import {SolarEngineManager} from '@solarengine/core'
SolarEngineManager.preInit(getContext(), appkey)
看到solar engine sdk preInit success! 代表预初始化成功了
第六步:初始化配置(可选)
SolarEngineConfig参数说明
本配置类用于初始化 SDK 时,对服务能力与数据采集行为进行精细化控制,分为核心功能开关、辅助功能开关、数据采集开关三类参数。
此方法返回的 config 配置作为可选参数,如未设置则为默认值
let config = new SolarEngineConfig();
config.enable2GReporting = true;
config.isDebugMode = true;
一、核心功能开关配置
| 方法名 | 参数类型 | 是否必填 | 说明 | 示例 |
| enableAttribution | boolean | 否 | 是否开启归因服务,默认开启。关闭后将停用全部归因相关能力,无法获取归因结果、延迟deeplink、deeplink等相关服务;若同时关闭分析服务,SDK 将停止上报所有数据。 | config.enableAttribution=true; |
| enableAnalytics | boolean | 否 | 是否开启分析服务,默认开启。关闭后 A/B 测试、在线参数等所有分析类功能均无法使用;若同时关闭归因服务,SDK 将不再上报任何数据。 | config.enableAnalytics=true; |
二、辅助功能开关
控制 SDK 的运行模式、调试日志、网络策略、授权等待、辅助功能(如延迟 Deeplink)等非核心业务的运行行为。
| 方法名 | 参数类型 | 是否必填 | 说明 | 示例 |
| logEnabled | void | 否 | 是否开启本地调试日志,默认为false,不开启 | config.logEnabled=true; |
| enable2GReporting | boolean | 否 | 是否在2G网络时上报事件,默认为false,不上报 | config.enable2GReporting=true; |
| isDebugMode | boolean | 否 | 是否开启 Debug 模式,默认为false,不开启,使用前请查看功能说明 | config.isDebugMode=true; |
| enableDeferredDeeplink | boolean | 否 | 否是启用延迟deeplink功能,默认为false,不开启 | config.enableDeferredDeeplink=true; |
| authorizationTimeout | number | 否 | 等待用户授权结果的最大时长,单位为毫秒,默认使用SDK内部等待时长 | config.authorizationTimeout=120; |
三、数据采集开关
控制 SDK 的运行模式、调试日志、网络策略、授权等待、辅助功能(如延迟 Deeplink)等非核心业务的运行行为。
| 方法名 | 参数类型 | 是否必填 | 说明 | 示例 |
| enableIPV6 | boolean | 否 | 是否采集ipv6地址, 不采集设置为false,默认 true(采集) | config.enableIPV6=true; |
| enableLanguage | boolean | 否 | 是否采集设备语言, 不采集设置为false,默认 true(采集) | config.enableLanguage=true; |
| enableLocale | boolean | 否 | 是否采集设备所在地区, 不采集设置为false,默认 true(采集) | config.enableLocale=true; |
| enableTimeZone | boolean | 否 | 是否采集设备所在时区, 不采集设置为false,默认 true(采集) | config.enableTimeZone=true; |
| enableScreenWH | boolean | 否 | 是否采集屏幕宽度/屏幕高度, 不采集设置为false,默认 true(采集) | config.enableScreenWH=true; |
| enableDensity | boolean | 否 | 是否采集屏幕密度, 不采集设置为false,默认 true(采集) | config.enableDensity=true; |
| enableNetworkType | boolean | 否 | 是否采集网络状态, 不采集设置为false,默认 true(采集) | config.enableNetworkType=true; |
| enableUA | boolean | 否 | 是否采集UA, 不采集设置为false,默认 true(采集) | config.enableUA=true; |
| enableOAID | boolean | 否 | 是否采集OAID, 不采集设置为false,默认 true(采集) | config.enableOAID=true; |
| enableODID | boolean | 否 | 是否采集ODID, 不采集设置为false,默认 true(采集) | config.enableODID=true; |
| enableAAID | boolean | 否 | 是否采集AAID, 不采集设置为false,默认 true(采集) | config.enableAAID=true; |
第七步:初始化SDK
必须保证热力引擎 SDK 初始化成功后再调用其他方法,如初始化成功之前调用其他方法会不生效(设置公共事件属性、设置channel、设置预置事件自定义属性方法除外)。
方法示例
public static async initialize(context: Context, appKey: string, config: SolarEngineConfig)
参数说明
| 参数名称 | 参数含义 | 参数类型 | 是否必传 |
| context | 应用程序上下文对象 | Context | 是 |
| appKey | 第一步获取的 Appkey | string | 是 |
| config | 配置项可以为空,如果为空则为默认值 | SolarEngineConfig | 否 |
调用示例
import {SolarEngineManager,SolarEngineConfig, InitSDKListener } from '@solarengine/core'
let onInitListener: InitSDKListener = {
onInitComplete: (code: number) => {
console.error(TAG, `初始化完成,返回码: ${code}`);
}
};
//设置SDK初始化回调
SolarEngineManager.setInitSDKListener(onInitListener);
//SDK初始化
SolarEngineManager.initialize(getContext(), "your_appkey");
如果需要在worker线程中初始化SDK,请参考worker线程初始化
如果开启了本地调试日志开关,看到 solar engine SDK init success 代表初始化成功了
初始化回调code码:
| 0 | 初始化成功 |
| 101 | SDK未预初始化 |
| 102 | appkey非法 |
| 103 | context为空 |
| 104 | 数据库初始化失败 |
| 105 | distinct_id生成失败 |
第八步:获取归因回调信息
8.1 SDK提供两种方式获取归因结果信息
方式一:设置归因结果回调获取归因结果
注:请在SDK初始化前设置归因结果回调,因为SDK初始化时可能会立即给归因结果回调,在SDK初始化后设置可能会导致接收不到归因结果回调。
方法示例
public static setAttributionListener(attributionListener: AttributionListener)
调用示例
import { SolarEngineManager, AttributionListener} from '@solarengine/core'
let attributionListener: AttributionListener = {
onAttributionSuccess(attribution:Record<string, Object>) {
//获取归因结果成功
},
onAttributionFailed(errorCode: number) {
//获取归因结果失败
}
};
//设置归因回调监听
SolarEngineManager.setAttributionListener(attributionListener);
//初始化SDK
SolarEngineManager.initialize(getContext(),"开发者申请的appkey");
方式二:直接获取归因结果
直接获取归因结果的方法返回的是本地缓存,如果本地缓存还未生成,那么归因结果将会为 {}
方法示例
public static getAttribution(): Record<string, Object>
返回值:返回归因结果信息,如无则返回默认值: {}
调用示例
import { SolarEngineManager} from '@solarengine/core'
let attribution = SolarEngineManager.getAttribution();
归因errorCode 描述及 归因结果详情见:归因结果详情