动态配置与动态更新地址¶
本文用于承载 React Native SDK 的远程配置、主动更新与动态更新上报地址能力。
动态配置¶
前置条件¶
只有在 FTMobileConfig.remoteConfiguration = true 时,动态配置相关能力才会生效。
监听远程配置更新¶
在开启远程配置后,可以监听由 SDK 自动触发的远程配置更新结果。
/**
* 监听由原生 SDK 自动触发的远程配置更新。
* 调用主动同步动态配置方法的 Promise 返回,不会通过此事件回调。
*/
addRemoteConfigListener(
listener: (result: FTRemoteConfigResult) => void,
): EmitterSubscription;
使用示例¶
主动同步动态配置¶
使用 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 支持。
setDatakitURL与setDatawayURL二选一使用。 使用setDatawayURL时,需要同时传入新的clientToken。
使用场景说明¶
FTMobileConfig 支持初始化时不传入 datakitUrl 或 datawayUrl。在这种场景下,SDK 会先执行数据采集,但不会进行上传。
当后续调用 FTMobileReactNative.setDatakitURL(...) 或 FTMobileReactNative.setDatawayURL(..., ...) 动态设置上报地址后,SDK 会开始消费本地缓存并执行数据上报。
需要注意的是,未设置上传地址期间,采集到的数据仍然会受到本地缓存上限限制。缓存上限主要受以下配置共同影响:
FTLogConfig.logCacheLimitCountFTRUMConfig.rumCacheLimitCountFTMobileConfig.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 地址上传数据。 |