一、说明
1.功能概述
应用的文案或者运营策略更新经常需要通过发版解决,为了减少开发者频繁更新应用版本,热力引擎推出参数下发功能,通过参数下发可以随时远程调整应用中的参数值实现应用内容更新
2.适用范围
本文档适用于
1、使用 Unity 来开发的移动端 APP 或产品。
2、Android 5.0 及以上的安卓系统,及 iOS 11.0 及以上的 iOS 系统。
3、使用 Unity 转抖音/微信/快手小游戏的产品。
3.SDK 下载
- 最新 SDK 版本为:V1.3.0.8
- 如果开发者要使用参数下发功能,需要去Unity SDK 集成文档中下载solarengine-unity-sdk.unitypackage
- 不支持Windows平台
二、接入SDK
由于参数下发SDK属于热力引擎SDK的一个插件,开发者在接入参数下发SDK时不需要再进行配置,
sdk默认接入在线参数
三、SDK 方法说明
1.初始化 SDK
参数下发SDK作为热力引擎SDK的一个插件,参数下发SDK初始化依赖于热力引擎SDK的初始化方法
方法示例
public static void initSeSdk(string appKey, SEConfig seConfig, RCConfig rcConfig)
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
appKey | 应用的appKey,需要联系商务人员从热力引擎后台获取 | string | 是 |
seConfig | 热力引擎SDK配置项 | SEConfig | 是 |
rcConfig | 热力引擎参数下发SDK配置项 | RCConfig | 是 |
SEConfig参数说明 详见Unity SDK集成文档
RCConfig参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
enable | 是否启用参数下发SDK,默认为关闭状态,必传字段 | bool | 是 |
mergeType | SDK配置合并策略,默认情况下服务端配置跟本地缓存配置合并,具体释义参考下方参数解释,可选字段 | RCMergeType | 否 |
customIDProperties | 自定义ID,跟用户在后台设置的使用自定义ID匹配对应 | Dictionary<string, object> | 否 |
customIDEventProperties | 自定义ID事件属性值,跟用户在后台设置的使用自定义ID事件属性值匹配对应,可选字段 | Dictionary<string, object> | 否 |
customIDUserProperties | 自定义ID用户属性值,跟用户在后台设置的使用自定义ID用户属性值匹配对应,可选字段 | Dictionary<string, object> | 否 |
mergeType(合并策略)介绍
参数名称 |
参数含义 |
ByUser
|
app首次启动或版本更新时, 使用服务端配置跟用户默认配置合并,此方法可以清除本地缓存配置 |
ByDefault
|
使用服务端配置跟用户本地已有缓存配置合并,参数下发SDK默认合并策略 |
注:开发者使用参数下发SDK需要通过API预置一份默认配置配置到App中,SDK使用该默认配置用来兜底,具体方法参考设置默认配置
调用示
SEConfig seConfig = new SEConfig();
seConfig.logEnabled = true;
RCConfig rcConfig = new RCConfig();
rcConfig.enable = true;
rc.mergeType = RCMergeType.byUser;
Dictionary<string, object> customIDProperties = new Dictionary<string, object>();
customIDProperties.Add("id_key1", "id_value1");
customIDProperties.Add("id_key2", "id_value2");
rcConfig.customIDProperties = customIDProperties;
Dictionary<string, object> customIDEventProperties = new Dictionary<string, object>();
customIDEventProperties.Add("event_key1", "event_value1");
customIDEventProperties.Add("event_key2", "event_value2");
rcConfig.customIDEventProperties = customIDEventProperties;
Dictionary<string, object> customIDUserProperties = new Dictionary<string, object>();
customIDUserProperties.Add("user_key1", "user_value1");
customIDUserProperties.Add("user_key2", "user_value2");
rcConfig.customIDUserProperties = customIDUserProperties;
SolarEngine.Analytics.initSeSdk("开发者申请的appkey",seConfig, rcConfig);
2. 设置默认配置
参数下发SDK需要开发者预置一份默认配置到用户app中,方便参数下发SDK使用此默认配置进行兜底操作
方法示例:
public void SetRemoteDefaultConfig(Item[] defaultConfig)
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
defaultConfig | 默认配置 |
Item[]
|
是 |
传入方法我们做了相应的封装,开发者可调用封装好的方法传入默认配置
方法示例:
public Item stringItem(string name, string value);
public Item intItem(string name, int value);
public Item boolItem(string name, bool value);
public Item jsonItem(string name,Dictionary<string,object> value);
调用示例:
SESDKRemoteConfig remoteConfig = new SESDKRemoteConfig();
List<object> list = new List<object>();
list.Add(1);
list.Add(2);
list.Add(3);
Dictionary<string, object> defaultConfig6 = new Dictionary<string, object>();
defaultConfig6.Add("name", "test");
defaultConfig6.Add("age", 1);
defaultConfig6.Add("list", list);
SESDKRemoteConfig.Item itemString = remoteConfig.stringItem("test", "test");
SESDKRemoteConfig.Item itemJson = remoteConfig.jsonItem("testjson", defaultConfig6);
SESDKRemoteConfig.Item itemBool = remoteConfig.boolItem("testbool", true);
SESDKRemoteConfig.Item itemInt = remoteConfig.intItem("testint", 1);
SESDKRemoteConfig.Item[] defaultConfigArray= new SESDKRemoteConfig.Item[]{itemString,itemJson,itemBool,itemInt};
remoteConfig.SetRemoteDefaultConfig(defaultConfigArray);
3. 设置事件自定义属性
开发者可以为事件设置自定义属性,参数下发SDK在请求服务端配置时会带上该属性,用于服务端参数匹配
方法示例
public void SetRemoteConfigEventProperties(Dictionary<string, object> properties)
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
properties | 事件自定义属性 | Dictionary<string, object> | 是 |
调用示例
SESDKRemoteConfig remoteConfig = new SESDKRemoteConfig();
Dictionary<string, object> eventProperties = new Dictionary<string, object>();
eventProperties.Add("event_pro1", "event_value1");
eventProperties.Add("event_pro2", "event_value2");
remoteConfig.SetRemoteConfigEventProperties(eventProperties);
注:给事件设置的自定义属性不支持开发者传入"_"下划线开头的key值,SDK会默认丢弃该条属性
4. 设置用户自定义属性
开发者可以为用户设置自定义属性,参数下发SDK在请求服务端配置时会带上该属性,用于服务端参数匹配
方法示例
public void SetRemoteConfigUserProperties(Dictionary<string, object> properties)
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
properties | 用户自定义属性 | Dictionary<string, object> | 是 |
调用示例
SESDKRemoteConfig remoteConfig = new SESDKRemoteConfig();
Dictionary<string, object> userProperties = new Dictionary<string, object>();
userProperties.Add("user_pro1", "user_value1");
userProperties.Add("user_pro2", "user_value2");
remoteConfig.SetRemoteConfigUserProperties(userProperties);
注:给用户设置的自定义属性不支持开发者传入"_"下划线开头的key值,SDK会默认丢弃该条属性
5. 获取参数下发配置
参数下发SDK获取参数下发配置分为两种情况,一种是同步获取方法,通过此方法开发者可以直接获取返回结果。另一种是异步获取方法,返回结果需要等待回调完成才可以获取
注:通过同步或异步方式获取参数时,sdk 会触发上报用户命中试验的事件,所以获取参数的时机应该在用户到达试验场景时读取(获取参数代表用户到达试验场景,用户命中该参数对应的试验),请勿提前读取参数
5.1 同步获取参数下发配置
方法示例
//非鸿蒙平台
public string FastFetchRemoteConfig(string key)
//鸿蒙平台
public void FastFetchRemoteConfig(string key,Action<string>callback)
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
key | 参数下发key,跟用户在后台配置参数key对应 | string | 是 |
返回值:返回key对应的value值,类型为string
调用示例
//非鸿蒙平台
SESDKRemoteConfig remoteConfig = new SESDKRemoteConfig();
//获取参数下发的方法返回值为string类型,需要开发者根据自己的业务配置进行属性转换,此处以bool类型为例
string result = remoteConfig.FastFetchRemoteConfig("key");
bool boolResult = bool.Parse(result);
//鸿蒙平台
remoteConfig.FastFetchRemoteConfig("key", onFetchRemoteConfigCallbacks);
private void onFetchRemoteConfigCallbacks(string result)
{
// 异步获取参数下发的回调为 string 类型,需要开发者根据自己的业务配置进行属性转换,此处以 bool 类型为例
bool boolResult = bool.Parse(result);
}
5.2 同步获取所有参数下发配置
方法示例
//非鸿蒙平台
public Dictionary<string, object> FastFetchRemoteConfig()
//鸿蒙平台
public void FastAllFetchRemoteConfig( Action<Dictionary<string, object>> callback)
返回值:返回所有参数下发配置的值,类型为Dictionary<string, object>
调用示例
//非鸿蒙平台
SESDKRemoteConfig remoteConfig = new SESDKRemoteConfig();
Dictionary<string,object> result = remoteConfig.FastFetchRemoteConfig();
//鸿蒙平台
remoteConfig.FastAllFetchRemoteConfig(onFetchRemoteConfigCallback);
private void onFetchRemoteConfigCallback(Dictionary<string, object> result)
{
string str = JsonConvert.SerializeObject(result);
Debug.Log(str);
}
5.3 异步获取参数下发配置
方法示例
public void AsyncFetchRemoteConfig(string key, FetchRemoteConfigCallback callback)
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
key | 参数下发key,跟用户在后台配置参数key对应 | string | 是 |
callback | 参数下发异步回调 | FetchRemoteConfigCallback | 是 |
调用示例
private void onFetchRemoteConfigCallback(string result) {
//异步获取参数下发的回调为string类型,需要开发者根据自己的业务配置进行属性转换,此处以bool类型为例
bool boolResult = bool.Parse(result);
}
SESDKRemoteConfig remoteConfig = new SESDKRemoteConfig();
remoteConfig.AsyncFetchRemoteConfig("key", onFetchRemoteConfigCallback);
5.4 异步获取所有参数下发配置
方法示例
public void AsyncFetchRemoteConfig(FetchAllRemoteConfigCallback callback)
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
callback | 参数下发异步回调 | FetchAllRemoteConfigCallback | 是 |
调用示例
private void onFetchAllRemoteConfigCallback(Dictionary<string, object> result) {
//result:异步获取到的所有在线参数配置
}
SESDKRemoteConfig remoteConfig = new SESDKRemoteConfig();
remoteConfig.AsyncFetchRemoteConfig(onFetchAllRemoteConfigCallback);
5.5 混淆配置
5.5.1 鸿蒙平台
如果打包时需要增加混淆,请将下方代码增加到配置中
./oh_modules/@solarengine/remoteconfig