Flutter集成Tealium与Firebase插件tealium_firebase的使用

Flutter集成Tealium与Firebase插件tealium_firebase的使用

Firebase for Tealium Flutter Plugin

文档

对于完整的文档,请参阅Tealium学习社区:

Tealium for Flutter

许可证

使用本软件受“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(),
      ),
    );
  }
}

说明

  1. 初始化Tealium

    • 使用TealiumConfig类创建配置对象,指定Tealium账户名称、环境、数据收集器、调度器等。
    • 调用Tealium.initialize方法初始化Tealium实例。
  2. 设置隐私同意状态

    • 使用Tealium.setConsentStatus设置用户的隐私同意状态。
    • 设置隐私同意过期监听器Tealium.setConsentExpiryListener
  3. 添加自定义远程命令

    • 使用Tealium.addCustomRemoteCommand添加自定义远程命令,并定义回调函数_logRemoteCommand处理响应。
  4. 跟踪事件

    • 使用Tealium.track方法跟踪屏幕视图和购买事件。
  5. 生成订单ID

    • _generateOrderId方法用于生成唯一的订单ID。

运行效果

运行该示例后,您将看到一个简单的Flutter应用界面,包含两个按钮:

  • Track Screen View:跟踪屏幕视图事件。
  • Track Purchase:跟踪购买事件。

点击按钮后,事件数据将被发送到Tealium和Firebase。


注意事项

  • 确保已正确安装tealium_firebasetealium_common依赖项。
  • pubspec.yaml中添加以下依赖:
    dependencies:
      tealium_firebase: ^版本号
      tealium_common: ^版本号
    

更多关于Flutter集成Tealium与Firebase插件tealium_firebase的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter集成Tealium与Firebase插件tealium_firebase的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter应用中集成Tealium和Firebase插件 tealium_firebase,可以帮助你轻松地将事件数据从Tealium发送到Firebase Analytics。以下是详细的步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 tealiumtealium_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/appios/Runner 目录下添加了正确的配置文件(google-services.jsonGoogleService-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!'),
      ),
    );
  }
}
回到顶部