一、简介
应用的文案或者运营策略更新经常需要通过发版解决,为了减少开发者频繁更新应用版本,热力引擎推出在线参数功能,通过在线参数可以随时远程调整应用中的参数值实现应用内容更新。
在线参数SDK插件使用时,依赖SolarEngine_minigame_unity_sdk_x.x.x.unitypackage SDK。支持unity 转抖音小游戏&微信小游戏两个平台。
二、集成前的准备工作
在正式开始数据接入之前,需要提前准备一些接入过程中需要的参数、准备在线参数SDK插件包,下面说明如何获取这些信息。
1.获取 userCode 和 Appkey
2.获取在线参数SDK插件
点击下载地址下载在线参数SDK插件包。【详见2.2获取在线参数SDK插件】
三、SDK 集成
1.SDK引入
unity 转抖音小游戏&微信小游戏的在线参数SDK,除引入方法不同外,其他全部相同
1.1 抖音
将sesdk-miniabtest-plugin-umd.js放入Assets/StreamingAssets/__cp_js_files下即可。
1.2微信
1)将sesdk-miniabtest-plugin-umd.js放入wechat-default文件夹下【WX-WASM-SDK-V2\Runtime\wechat-default】
2)game.js文件添加代码位置分别如下
import SESDK from './miniwx-cn-sesdk-umd';
//在线参数插件
import miniabtestPlugin from './sesdk-miniabtest-plugin-umd';
GameGlobal.SESDK=SESDK;
//在线参数插件
GameGlobal.miniabtestPlugin=miniabtestPlugin;
2.SDK初始化
由于在线参数SDK属于热力引擎SDK的一个插件,所以在线参数SDK的初始化是依赖于抖音小游戏&微信小游戏_unity转webgel 的sdk的。开发者可以通过抖音小游戏&微信小游戏_unity转webgel 的sdk的配置方法来控制是否启用在线参数SDK并使用在线参数SDK的相关功能。
// 加载在线参数SDK插件
SESDKBridge.Instance.abtestuse();
// 预初始化
SESDKBridge.Instance.prevInit(appkey);
// 初始化SDK
SESDKBridge.Instance.init(initParams);
initParams参数说明:
参数 |
类型 |
是否必填 |
说明 |
userId |
string |
是 |
账户的 userCode |
appKey |
string |
是 |
应用的 appKey |
config |
Config |
否 |
初始化相关的配置信息 |
初始化配置InitConfig参数说明:
参数 |
类型 |
是否必填 |
说明 |
remoteConfig |
RemoteConfig |
否 |
在线参数配置 |
debugModel |
boolean |
否 |
是否开启调试,默认false不开启 |
在线参数配置RemoteConfig说明:
参数 |
类型 |
是否必填 |
说明 |
enable |
boolean |
否 |
是否初始化在线参数SDK,默认为false |
mergeType |
int |
否 |
服务端跟SDK配置合并策略0-使用服务端配置跟用户本地已有缓存配置合并,默认。1-使用服务端配置跟用户默认配置合并 |
customIDProperties |
Dictionary<string, object> |
否 |
自定义ID,跟用户在后台设置的使用自定义ID匹配对应;属性格式要求见微信小程序 SDK或者Web SDK下自定义属性要求。 |
customIDEventProperties |
Dictionary<string, object> |
否 |
自定义ID事件属性值,跟用户在后台设置的使用自定义ID事件属性值匹配对应; 属性格式要求见微信小程序 SDK或者Web SDK下自定义属性要求。 |
customIDUserProperties |
Dictionary<string, object> |
否 |
自定义ID用户属性值,跟用户在后台设置的使用自定义ID用户属性值匹配对应;; 属性格式要求见微信小程序 SDK或者Web SDK下自定义属性要求。 |
pollingInterval |
int |
否 |
轮询间隔时间(单位:分),区间:30分钟-24小时,默认30分钟。 |
requestTimeout |
long |
否 |
请求配置接口的超时时间(单位:毫秒), 默认60*1000毫秒 |
InitParams initParams = new InitParams();
initParams.userId = "userid";
initParams.appKey ="appkey";
InitConfig initConfig = new InitConfig();
initConfig.logEnabled = true;
RemoteConfig remoteConfig = new RemoteConfig();
remoteConfig.pollingInterval = 30;
remoteConfig.enable = true;
remoteConfig.mergeType = 1;
remoteConfig.customIDProperties = new Dictionary<string, object> { { "a", 1 } };
remoteConfig.customIDEventProperties = new Dictionary<string, object> { { "e", 1 } };
remoteConfig.customIDUserProperties = new Dictionary<string, object> { { "u", 1 } };
remoteConfig.requestTimeout = 5000;
initConfig.remoteConfig = remoteConfig;
initParams.config = initConfig;
SESDKBridge.Instance.init(initParams);
注:开发者使用在线参数SDK需要通过API预置一份默认配置配置到App中,SDK使用该默认配置用来兜底,具体配置方法参考下方设置默认配置方法。
2.设置默认配置
在线参数SDK需要开发者预置一份默认配置到用户app中,方便在线参数SDK使用此默认配置进行兜底操作。
方法示例:
public void setRemoteDefaultConfig( DefaultConfig[] defaultConfig)
参数相关:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
defaultConfig |
开发者传入的默认配置 |
DefaultConfig[] |
是 |
DefaultConfig[] defaultConfigs = new DefaultConfig[]
{
new DefaultConfig
{
name = "k1",// 配置项的名称,对应fastFetchRemoteConfig接口的参数 key
type = 1, //配置项的类型 1 string、2 number、3 boolean、4 json
value = "v1" // 配置项的值
}
};
SESDKBridge.Instance.setRemoteDefaultConfig(defaultConfigs);
3.设置自定义事件属性
开发者可以为事件设置自定义属性(属性格式要求见微信小游戏 Unity转WebGL SDK集成文档下自定义属性要求),在线参数SDK在请求服务端配置时会带上该属性,用于服务端参数匹配。
方法示例:
public void setRemoteConfigEventProperties(Dictionary<string,object>properties)
注:必须在SDK初始化之前设置。
参数相关:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
properties |
事件自定义属性 |
Dictionary<string,object> |
是 |
调用示例code:
Dictionary<string, object> properties = new Dictionary<string, object>
{
{ "k1", "value1" },
{ "k2", 2 }
};
SESDKBridge.Instance.setRemoteConfigEventProperties(properties);
4.设置自定义用户属性
开发者可以为用户设置自定义属性(属性格式要求见微信小游戏 Unity转WebGL SDK集成文档下自定义属性要求),在线参数SDK在请求服务端配置时会带上该属性,用于服务端参数匹配。
方法示例:
public void setRemoteConfigUserProperties(Dictionary<string,object>properties)
注:必须在SDK初始化之前设置。
参数相关:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
properties |
事件自定义属性 |
Dictionary<string,object> |
是 |
调用示例:
Dictionary<string, object> properties = new Dictionary<string, object>
{
{ "k1", "value1" },
{ "k2", 2 }
};
SESDKBridge.Instance.setRemoteConfigUserProperties(properties);
5.获取在线参数配置
在线参数SDK获取在线参数配置分为两种情况,一种是同步获取方法,通过此方法开发者可以获取返回结果。另一种是异步获取方法,返回结果需要等待回调完成才可以获取。
注:通过同步或异步方式获取参数时,sdk 会触发上报用户命中试验的事件,所以获取参数的时机应该在用户到达试验场景时读取(获取参数代表用户到达试验场景,用户命中该参数对应的试验),请勿提前读取参数
5.1 同步获取在线参数配置
方法示例:
public string fastFetchRemoteConfig(string key)
注:必须在SDK之后才可获取,可调用SESDK.SESDKBridge.Instance.addInitReadyCallback方法判断SDK是否完成初始化。
参数相关:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
key |
在线参数key,跟用户在后台配置参数key对应 |
string |
是 |
返回值类型: string
SESDKBridge.Instance.addInitReadyCallback(ReadyCalllBack);
void ReadyCalllBack()
{
string key = "k1";
//获取在线参数
string value=SESDKBridge.Instance.fastFetchRemoteConfig(key);
// 取值之后的操作
//需要手动调用removeInitReadyCallback移除
SESDKBridge.Instance.removeInitReadyCallback(ReadyCalllBack);
}
5.2 异步获取在线参数配置
方法示例:
public void asyncFetchRemoteConfig(string key,AsyncFetchRemoteConfigCallBack callBack)
参数名称 |
参数含义 |
参数类型 |
是否必传 |
key |
在线参数key,跟用户在后台配置参数key对应 |
string |
是 |
SESDKBridge.Instance.asyncFetchRemoteConfig( "k1", callBack);
public void callBack(object value)
{
// // 取值后的操作
Debug.Log("callBack"+value);
}
————————————
SDK 更新记录
- 2024-03-06
1.0.0版本上线