动态配置与动态更新地址¶
主动同步动态配置¶
使用 FTSdk 主动同步动态配置。在自动更新不满足需求时,通过主动调用方式调整更新时机。
ft-sdk >= 1.6.16 支持,通过
FetchResult.onConfigSuccessFetched(RemoteConfigBean configBean, String jsonConfig)可对环境变量自行进行解析。
/**
* 主动更新远程配置,调用频次受 FTSDKConfig.setRemoteConfigMiniUpdateInterval 影响
*/
FTSdk.updateRemoteConfig();
/**
* 主动更新远程配置,该方法无视 FTSDKConfig.setRemoteConfigMiniUpdateInterval 配置
*
* @param remoteConfigMiniUpdateInterval 远程配置时间间隔,单位秒 [0,)
* @param result 返回更新结果
*/
FTSdk.updateRemoteConfig(int remoteConfigMiniUpdateInterval, FTRemoteConfigManager.FetchResult result);
/**
* 主动更新远程配置,调用频次受 FTSDKConfig.setRemoteConfigMiniUpdateInterval 影响
*/
FTSdk.updateRemoteConfig()
/**
* 主动更新远程配置,该方法无视 FTSDKConfig.setRemoteConfigMiniUpdateInterval 配置
*
* @param remoteConfigMiniUpdateInterval 远程配置时间间隔,单位秒 [0,)
* @param result 返回更新结果
*/
FTSdk.updateRemoteConfig(remoteConfigMiniUpdateInterval, result)
代码示例¶
FTSdk.updateRemoteConfig(0, new FTRemoteConfigManager.FetchResult() {
@Override
public void onResult(boolean success) {
//
}
@Override
public RemoteConfigBean onConfigSuccessFetched(RemoteConfigBean configBean, String jsonConfig) {
// 可选扩展,自定义解析并更改本地配置
boolean isVip = false;
try {
JSONObject jsonObject = new JSONObject(jsonConfig);
String userid = jsonObject.optString("custom_userid");
isVip = (userid.equals("custom_user_test6"));
} catch (JSONException e) {
}
if (isVip) {
configBean.setRumSampleRate(1f);
configBean.setLogSampleRate(1f);
configBean.setTraceSampleRate(1f);
}
return configBean;
}
});
FTSdk.updateRemoteConfig(0, object : FTRemoteConfigManager.FetchResult {
override fun onResult(success: Boolean) {
//
}
override fun onConfigSuccessFetched(
configBean: RemoteConfigBean,
jsonConfig: String
): RemoteConfigBean {
// 可选扩展,自定义解析并更改本地配置
var isVip = false
try {
val jsonObject = JSONObject(jsonConfig)
val userId = jsonObject.optString("custom_userid")
isVip = userId == "custom_user_test6"
} catch (e: JSONException) {
// ignore
}
if (isVip) {
configBean.setRumSampleRate(1f)
}
return configBean
}
})
动态开启和关闭获取 AndroidID¶
使用 FTSdk 设置是否在 SDK 中获取 Android ID。
动态更新上报地址¶
使用 FTSdk 在 SDK 运行时动态切换数据上报地址。设置成功后,后续数据会按新的地址继续上传。
ft-sdk >= 1.6.17 支持。
setDatakitUrl与setDatawayUrl二选一使用。 使用setDatawayUrl时,需要同时传入新的clientToken。
使用场景说明¶
FTSDKConfig.builder() 支持初始化时不传入 datakitUrl 或 datawayUrl。在这种场景下,SDK 会先执行数据采集,但不会进行上传。
当后续调用 FTSdk.setDatakitUrl(...) 或 FTSdk.setDatawayUrl(..., ...) 动态设置上报地址后,SDK 会开始消费本地缓存并执行数据上报。
需要注意的是,未设置上传地址期间,采集到的数据仍然会受到本地缓存上限限制。缓存上限主要受以下配置共同影响:
FTLoggerConfig.setLogCacheLimitCountFTRUMConfig.setRumCacheLimitCountFTSDKConfig.enableLimitWithDbSize对应的数据库缓存上限
如果缓存达到上限,超出部分的数据可能被丢弃,因此建议在该模式下尽快补充上传地址,或结合业务场景合理设置缓存限制。
| 方法名 | 类型 | 必须 | 含义 |
|---|---|---|---|
| setDatakitUrl | String | 是 | 动态设置 Datakit 上报地址,设置成功后 SDK 会继续向新的 Datakit 地址上传数据。 |
| setDatawayUrl | String, String | 是 | 动态设置 Dataway 上报地址和 clientToken,设置成功后 SDK 会继续向新的 Dataway 地址上传数据。 |