Flutter集成Tealium与Firebase插件tealium_firebase的使用
Flutter集成Tealium与Firebase插件tealium_firebase的使用
Firebase for Tealium Flutter Plugin
文档
对于完整的文档,请参阅Tealium学习社区:
许可证
使用本软件受“LICENSE.txt”文件中包含的许可协议条款和条件的约束。在下载或使用此存储库中的任何文件之前,请务必阅读许可协议。通过下载或使用这些文件,即表示您同意遵守并符合许可协议。
版权 (C) 2012-2022, Tealium Inc.
示例代码
以下是一个完整的示例代码,展示了如何在Flutter应用中集成Tealium与Firebase插件tealium_firebase
。
示例代码:main.dart
import 'dart:convert';
import 'dart:math';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:tealium_firebase/tealium_firebase.dart';
import 'dart:developer' as developer;
import 'package:tealium/common.dart';
import 'package:tealium/tealium.dart';
import 'tealium_button.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
initPlatformState();
}
// 平台消息是异步的,因此我们初始化在一个异步方法中。
Future<void> initPlatformState() async {
// 如果小部件从树中移除时异步平台消息还在飞行中,则我们希望丢弃回复而不是调用setState来更新我们的非存在的外观。
if (!mounted) return;
// 初始化Tealium配置
var config = TealiumConfig(
'tealiummobile',
'demo',
TealiumEnvironment.dev,
[Collectors.AppData],
[Dispatchers.RemoteCommands],
batchingEnabled: false,
consentExpiry: ConsentExpiry(5, TimeUnit.MINUTES),
remoteCommands: [
RemoteCommand(TealiumFirebase.commandName, path: "firebase.json")
]);
// 初始化Tealium实例
Tealium.initialize(config).then((value) => {
developer.log('Tealium Initialized'),
Tealium.setConsentStatus(ConsentStatus.consented),
Tealium.setConsentExpiryListener(
() => developer.log('Consent Expired')),
Tealium.setVisitorServiceListener(
(profile) => developer.log(profile)),
Tealium.addCustomRemoteCommand('hello-world', _logRemoteCommand),
Tealium.track(TealiumEvent("init", {}))
});
}
ListView _listView() {
return ListView(
scrollDirection: Axis.vertical,
children: <Widget>[
Padding(padding: EdgeInsets.all(3.5)),
TealiumButton(
title: 'Track Screen View',
onPressed: () => Tealium.track(TealiumView("screen_view", {
"screen_class": "com.tealium.flutter.Screen",
"screen_name": "Main Screen"
}))
),
TealiumButton(
title: 'Track Purchase',
onPressed: () => Tealium.track(TealiumView("purchase", {
"product_id": ["SKU-123", "SKU-456"],
"product_name": ["Product 123", "Product 456"],
"product_category": ["clothes", "shoes"],
// "product_quantity": [1, 2],
// "product_price": [10.0, 5.0],
"order_currency": "USD",
"order_total": 20.0,
"order_id": "ORD-${_generateOrderId()}",
}))
),
],
);
}
String _generateOrderId() {
var rand = Random();
return rand.nextInt(99999999).toString();
}
void _logRemoteCommand(String name, dynamic payload) {
developer.log('=========$name Remote Command Response=========');
developer.log(JsonEncoder().convert(payload));
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: _listView(),
),
);
}
}
说明
-
初始化Tealium:
- 使用
TealiumConfig
类创建配置对象,指定Tealium账户名称、环境、数据收集器、调度器等。 - 调用
Tealium.initialize
方法初始化Tealium实例。
- 使用
-
设置隐私同意状态:
- 使用
Tealium.setConsentStatus
设置用户的隐私同意状态。 - 设置隐私同意过期监听器
Tealium.setConsentExpiryListener
。
- 使用
-
添加自定义远程命令:
- 使用
Tealium.addCustomRemoteCommand
添加自定义远程命令,并定义回调函数_logRemoteCommand
处理响应。
- 使用
-
跟踪事件:
- 使用
Tealium.track
方法跟踪屏幕视图和购买事件。
- 使用
-
生成订单ID:
_generateOrderId
方法用于生成唯一的订单ID。
运行效果
运行该示例后,您将看到一个简单的Flutter应用界面,包含两个按钮:
- Track Screen View:跟踪屏幕视图事件。
- Track Purchase:跟踪购买事件。
点击按钮后,事件数据将被发送到Tealium和Firebase。
注意事项
- 确保已正确安装
tealium_firebase
和tealium_common
依赖项。 - 在
pubspec.yaml
中添加以下依赖:dependencies: tealium_firebase: ^版本号 tealium_common: ^版本号
更多关于Flutter集成Tealium与Firebase插件tealium_firebase的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成Tealium与Firebase插件tealium_firebase的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter应用中集成Tealium和Firebase插件 tealium_firebase
,可以帮助你轻松地将事件数据从Tealium发送到Firebase Analytics。以下是详细的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 tealium
和 tealium_firebase
插件的依赖。
dependencies:
flutter:
sdk: flutter
tealium: ^2.0.0 # 请使用最新版本
tealium_firebase: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 初始化Tealium
在你的Flutter应用中初始化Tealium。你可以在 main.dart
文件中的 main
函数中进行初始化。
import 'package:flutter/material.dart';
import 'package:tealium/tealium.dart';
import 'package:tealium_firebase/tealium_firebase.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Tealium
TealiumConfig config = TealiumConfig(
account: "your_account",
profile: "your_profile",
environment: Environment.prod,
dataSource: "your_data_source",
collectors: [Collectors.lifecycle, Collectors.attribution],
dispatchers: [Dispatchers.tagManagement, Dispatchers.collect, Dispatchers.remoteCommands],
consentPolicy: ConsentPolicy.gdpr,
consentLoggingEnabled: true
);
await Tealium.instance.initialize(config);
// 初始化Tealium Firebase插件
TealiumFirebase.initialize();
runApp(MyApp());
}
3. 配置Firebase
确保你已经按照 Firebase官方文档 配置好了Firebase项目,并且在 android/app
和 ios/Runner
目录下添加了正确的配置文件(google-services.json
和 GoogleService-Info.plist
)。
4. 发送事件到Firebase
使用Tealium发送事件到Firebase非常简单。你可以使用 Tealium.instance.trackEvent
方法发送事件,tealium_firebase
插件会自动将这些事件转发到Firebase Analytics。
import 'package:flutter/material.dart';
import 'package:tealium/tealium.dart';
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Tealium with Firebase'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 发送自定义事件到Firebase
Tealium.instance.trackEvent(
eventName: 'button_click',
data: {'button_name': 'my_button'},
);
},
child: Text('Click Me'),
),
),
),
);
}
}
5. 处理屏幕视图
你还可以使用Tealium来跟踪屏幕视图,并将其发送到Firebase。
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
// 跟踪屏幕视图
Tealium.instance.trackScreen(
screenName: 'home_screen',
data: {'screen_title': 'Home Screen'},
);
return Scaffold(
appBar: AppBar(
title: Text('Home Screen'),
),
body: Center(
child: Text('Welcome to the Home Screen!'),
),
);
}
}