菜单

Cocos2d-x SDK

一、说明

1.功能概述

应用的文案或者运营策略更新经常需要通过发版解决,为了减少开发者频繁更新应用版本,热力引擎推出参数下发功能,通过参数下发可以随时远程调整应用中的参数值实现应用内容更新

2.适用范围

本文档适用于使用 Cocos2d-x 来开发的移动端 APP 或产品。 本文档适用于 Android 5.0 及以上的安卓系统,及 iOS 11.0 及以上的 iOS 系统. 

3.SDK 下载

最新 SDK 版本为:V1.0.0
如果开发者要使用参数下发功能,需要去Cocos2d-x SDK 集成文档中下载SDK压缩包

二、接入SDK

由于参数下发SDK属于热力引擎SDK的一个插件,开发者在接入参数下发SDK时不需要再进行配置,只需要将参数下发SDK对应的桥文件以及源文件导入到项目即可,具体可参考Cocos2d-x SDK集成文档

三、SDK 方法说明

1.初始化 SDK

参数下发SDK作为热力引擎SDK的一个插件,参数下发SDK初始化依赖于热力引擎SDK的初始化方法,具体初始化方法参考Cocos2d-x SDK集成文档中热力引擎SDK初始化方法

 

remoteConfig参数说明(在线参数功能)

参数名称 参数含义 参数类型 是否必传
logEnabled 是否开启日志打印,默认为关闭状态

bool

enable 是否启用在线参数SDK,默认为关闭状态,必传字段

bool

mergeType

SDK配置合并策略,默认情况下服务端配置跟本地缓存配置合并,具体释义参考下方参数解释,可选字段

0: app首次启动或版本更新时, 使用服务端配置跟用户默认配置合并,此方法可以清除本地缓存配置

1: 使用服务端配置跟用户本地已有缓存配置合并,在线参数SDK默认合并策略

int
customIDEventProperties 自定义ID事件属性值,跟用户在后台设置的使用自定义ID事件属性值匹配对应,可选字段

SEJSONObject

customIDUserProperties 自定义ID用户属性值,跟用户在后台设置的使用自定义ID用户属性值匹配对应,可选字段

SEJSONObject

 

在线参数初始化示例

#include "./SolarEngineSDK/Common/SolarEngineAPI.h"
#include "./SolarEngineSDK/Common/SEJSONObject.h"


string seAppKey = "";

// 预初始化
SolarEngineAPI::preInit(seAppKey);

// 配置SDK
SECConfig config;
config.enableLog = true;

SECRemoteConfig remote;
remote.enable = true;
config.remoteConfig = remote;

// 初始化
SolarEngineAPI::init(seAppKey, config);

 

 

2. 设置默认配置

参数下发SDK需要开发者预置一份默认配置到用户app中,方便参数下发SDK使用此默认配置进行兜底操作

 

参数说明

参数名称 参数含义 参数类型 是否必传
setDefaultConfig

默认配置,默认配置格式需要跟后配配置格式一致

 

array

 

 object 字段必须有以下三个:

  • name: 参数名
  • type: 参数类型,1 string、2 int、3 bool、4 json string
  • value: 参数值,

调用示例

SECRemoteConfigItem item1;
item1.name = "game_difficulty";
item1.value = "normal";
item1.type = 1; // string


SECRemoteConfigItem item2;
item2.name = "complex_config";
item2.value = "{\"data\":[{\"key1\":[1,2]},{\"key2\":\"value\"}]}";
item2.type = 4; // Complex JSON

std::vector<SECRemoteConfigItem> defaultConfig = {item1, item2};

SolarEngineAPI::setDefaultRemoteConfig(defaultConfig);

 

3. 设置事件自定义属性

开发者可以为事件设置自定义属性,参数下发SDK在请求服务端配置时会带上该属性,用于服务端参数匹配

SEJSONObject eventProps;
eventProps.setString("key", "value");
SolarEngineAPI::setRemoteConfigEventProperties(eventProps);

注:给用户设置的自定义属性不支持开发者传入"_"下划线开头的key值,SDK会默认丢弃该条属性

4. 设置用户自定义属性

开发者可以为用户设置自定义属性,参数下发SDK在请求服务端配置时会带上该属性,用于服务端参数匹配

solarengine.setRemoteConfigUserProperties(
	{
		"k_u1":"v111",
		"k_u2":222
	}
);

 

5. 获取参数下发配置

参数下发SDK获取参数下发配置分为两种情况,一种是同步获取方法,通过此方法开发者可以直接获取返回结果。另一种是异步获取方法,返回结果需要等待回调完成才可以获取

注:通过同步或异步方式获取参数时,sdk 会触发上报用户命中试验的事件,所以获取参数的时机应该在用户到达试验场景时读取(获取参数代表用户到达试验场景,用户命中该参数对应的试验),请勿提前读取参数

5.1 同步获取参数下发配置

 

参数说明

参数名称 参数含义 参数类型 是否必传
key 参数下发key,跟用户在后台配置参数key对应 string

 

调用示例

string value = SolarEngineAPI::fastFetchRemoteConfig("testint");
CCLOG("快速获取配置: value = %s", value.c_str());

 

5.2 同步获取所有参数下发配置

返回值:返回所有参数下发配置的值,类型为 object

 

调用示例

SEJSONObject allConfig = SolarEngineAPI::fastFetchAllRemoteConfig();
if (!allConfig.propertiesMap.empty())
{
    // 打印所有配置项
    for (const auto &pair : allConfig.propertiesMap)
    {
        std::string value;
        SEJSONObject::ValueNode::toStr(pair.second, &value);
        CCLOG("[RemoteConfig] %s: %s", pair.first.c_str(), value.c_str());
    }
}
else
{
    CCLOG("快速获取所有配置失败: 无配置项");
}

 

5.3 异步获取参数下发配置

参数说明

参数名称 参数含义 参数类型 是否必传
key

参数下发key,跟用户在后台配置参数key对应

 

string
callback

参数下发异步回调

callback

 

调用示例 

SolarEngineAPI::asyncFetchRemoteConfig("key6", [this](const string &result)
                                       {
    CCLOG("异步获取配置成功: result = %s", result.c_str());
});

 

5.4 异步获取所有参数下发配置

 

参数说明

参数名称 参数含义 参数类型 是否必传
callback

参数下发异步回调

callback

 

调用示例

SolarEngineAPI::asyncFetchAllRemoteConfig([this](const SEJSONObject &result)
                                          {
    if (!result.propertiesMap.empty()) {
        CCLOG("异步获取所有配置成功,配置项数量: %d", result.propertiesMap.size());
        
        // 打印所有配置项
        for (const auto& pair : result.propertiesMap) {
            std::string value;
            SEJSONObject::ValueNode::toStr(pair.second, &value);
            CCLOG("[RemoteConfig] %s: %s", pair.first.c_str(), value.c_str());
        }
    } else {
        CCLOG("异步获取所有配置失败: 无配置项");
    }
});

 

最近修改: 2025-09-23Powered by