跳转至

动态配置与动态更新地址

本文用于承载 React Native SDK 的远程配置、主动更新与动态更新上报地址能力。

动态配置

前置条件

只有在 FTMobileConfig.remoteConfiguration = true 时,动态配置相关能力才会生效。

监听远程配置更新

在开启远程配置后,可以监听由 SDK 自动触发的远程配置更新结果。

/**
 * 监听由原生 SDK 自动触发的远程配置更新。
 * 调用主动同步动态配置方法的 Promise 返回,不会通过此事件回调。
 */
addRemoteConfigListener(
  listener: (result: FTRemoteConfigResult) => void,
): EmitterSubscription;

使用示例

FTMobileReactNative.addRemoteConfigListener((result) => {
  console.log('自动远程配置更新结果:', result);
});

主动同步动态配置

使用 FTMobileReactNative 主动同步动态配置。在自动更新不满足需求时,可通过主动调用方式调整更新时机。

/**
 * 主动更新远程配置,调用频次受 FTMobileConfig.remoteConfigMiniUpdateInterval 影响。
 */
updateRemoteConfig(): Promise<FTRemoteConfigResult>;

/**
 * 主动更新远程配置,可无视全局最小更新间隔配置。
 * 若距离上次更新的时间小于指定间隔,则不会执行更新操作。
 * @param interval 最小更新间隔,单位:秒
 * @param rules 远程配置覆盖规则
 */
updateRemoteConfigWithMiniUpdateInterval(
  interval: number,
  rules?: Array<FTRemoteConfigOverrideRule>,
): Promise<FTRemoteConfigResult>;

使用示例

// 基础主动同步更新(受全局最小间隔限制)
FTMobileReactNative.updateRemoteConfig();

const rule: FTRemoteConfigOverrideRule = {
  id: 'test_rule',
  match: {
    customKeys: {
      custom_key: 'custom_value',
      vip_user_id: {
        contains: 'test_user_1001',
      },
    },
  },
  override: {
    rumSampleRate: 1,
    traceSampleRate: 1,
    logSampleRate: 1,
    logLevelFilters: ['info', 'warn'],
  },
};

const result = await FTMobileReactNative.updateRemoteConfigWithMiniUpdateInterval(0, [rule]);
console.log('updateRemoteConfigWithMiniUpdateInterval result ', result);

FTMobileReactNative.updateRemoteConfigWithMiniUpdateInterval(0, null);

customKeys 的值为普通值时,按完全匹配处理;当值为 { contains: value } 时,按包含匹配处理。

contains 主要适用于按固定 key 匹配指定用户场景,例如 vip_user_id。服务端对应字段返回以下任一格式时,均可匹配:

  • 单个字符串,例如 "test_user_1001"
  • JSON 数组,例如 ["test_user_1001", "test_user_1002"]
  • JSON 字符串数组,例如 "[\"test_user_1001\",\"test_user_1002\"]"

动态更新上报地址

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

React Native SDK >= 0.4.1 支持。 setDatakitURLsetDatawayURL 二选一使用。 使用 setDatawayURL 时,需要同时传入新的 clientToken

使用场景说明

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

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

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

  • FTLogConfig.logCacheLimitCount
  • FTRUMConfig.rumCacheLimitCount
  • FTMobileConfig.enableLimitWithDbSize 对应的数据库缓存上限

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

/**
 * 动态设置 Datakit 上报地址,设置成功后 SDK 会继续向新的 Datakit 地址上传数据。
 */
setDatakitURL(datakitUrl: string): Promise<void>;

/**
 * 动态设置 Dataway 上报地址和 clientToken,设置成功后 SDK 会继续向新的 Dataway 地址上传数据。
 */
setDatawayURL(datawayUrl: string, clientToken: string): Promise<void>;

使用示例

await FTMobileReactNative.setDatakitURL('http://10.0.0.1:9529');

await FTMobileReactNative.setDatawayURL(
  'https://openway.guance.com',
  'your-client-token',
);
方法名 类型 必须 含义
setDatakitURL string 动态设置 Datakit 上报地址,设置成功后 SDK 会继续向新的 Datakit 地址上传数据。
setDatawayURL string, string 动态设置 Dataway 上报地址和 clientToken,设置成功后 SDK 会继续向新的 Dataway 地址上传数据。

文档评价

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