跳转至

动态配置与动态更新地址

主动同步动态配置

使用 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.setEnableAccessAndroidID(true);
FTSdk.setEnableAccessAndroidID(false);
FTSdk.setEnableAccessAndroidID(true)
FTSdk.setEnableAccessAndroidID(false)

动态更新上报地址

使用 FTSdk 在 SDK 运行时动态切换数据上报地址。设置成功后,后续数据会按新的地址继续上传。

ft-sdk >= 1.6.17 支持。 setDatakitUrlsetDatawayUrl 二选一使用。 使用 setDatawayUrl 时,需要同时传入新的 clientToken

使用场景说明

FTSDKConfig.builder() 支持初始化时不传入 datakitUrldatawayUrl。在这种场景下,SDK 会先执行数据采集,但不会进行上传。

当后续调用 FTSdk.setDatakitUrl(...)FTSdk.setDatawayUrl(..., ...) 动态设置上报地址后,SDK 会开始消费本地缓存并执行数据上报。

需要注意的是,未设置上传地址期间,采集到的数据仍然会受到本地缓存上限限制。缓存上限主要受以下配置共同影响:

  • FTLoggerConfig.setLogCacheLimitCount
  • FTRUMConfig.setRumCacheLimitCount
  • FTSDKConfig.enableLimitWithDbSize 对应的数据库缓存上限

如果缓存达到上限,超出部分的数据可能被丢弃,因此建议在该模式下尽快补充上传地址,或结合业务场景合理设置缓存限制。

FTSdk.setDatakitUrl("http://10.0.0.1:9529");
FTSdk.setDatawayUrl("https://openway.guance.com", "your-client-token");
FTSdk.setDatakitUrl("http://10.0.0.1:9529")
FTSdk.setDatawayUrl("https://openway.guance.com", "your-client-token")
方法名 类型 必须 含义
setDatakitUrl String 动态设置 Datakit 上报地址,设置成功后 SDK 会继续向新的 Datakit 地址上传数据。
setDatawayUrl String, String 动态设置 Dataway 上报地址和 clientToken,设置成功后 SDK 会继续向新的 Dataway 地址上传数据。

文档评价

文档内容是否对您有帮助? ×