自定义标签使用¶
静态使用¶
- 拆分原有的
main.dart为两个部分,一部分为main(),一部分为App()MaterialApp组件 - 建立各个环境对应的入口文件,例如:
main_prod.dart、main_gray.dart - 在对应环境入口中进行自定义标签配置
/// main_prod.dart
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await FTMobileFlutter.sdkConfig(
datakitUrl: serverUrl,
debug: true,
);
await FTRUMManager().setConfig(
androidAppId: appAndroidId,
iOSAppId: appIOSId,
globalContext: {CUSTOM_STATIC_TAG: "prod_static_tag"},
);
runApp(MyApp());
}
动态使用¶
因 RUM 启动后重新设置 globalContext 不会立即作用于已启动配置,动态标签通常通过本地持久化,在下次应用启动时生效。
- 通过文件类型数据(如
shared_preferences的SharedPreferences)保存标签数据,并在 SDK 配置时读取
final prefs = await SharedPreferences.getInstance();
String customDynamicValue =
prefs.getString("customDynamicValue") ?? "not set";
await FTRUMManager().setConfig(
androidAppId: appAndroidId,
iOSAppId: appIOSId,
globalContext: {CUSTOM_DYNAMIC_TAG: customDynamicValue},
);
- 在任意处添加改变文件数据的方法
static Future<void> setDynamicParams(String value) async {
final prefs = await SharedPreferences.getInstance();
prefs.setString(CUSTOM_DYNAMIC_TAG, value);
}
- 最后重启应用
注意事项¶
- 特殊 key:
track_id,用于追踪功能 - 当用户通过
globalContext添加自定义标签与 SDK 自有标签相同时,SDK 标签会覆盖用户设置的值 - 建议标签命名添加项目缩写前缀,例如
df_tag_name - 共享规则说明请查阅 冲突字段说明