Flutter数据分析与追踪插件rudder_sdk_flutter的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter数据分析与追踪插件rudder_sdk_flutter的使用

什么是Rudder?

简短回答: Rudder是一个用Go编写的开源Segment替代品,专为企业打造。

详细回答: Rudder是一个用于收集、存储和路由客户事件数据到多个工具的平台。Rudder是开源的,可以在您的云环境中运行(AWS、GCP、Azure甚至您的数据中心),并提供一个强大的转换框架来实时处理您的事件数据。

发布在MIT许可下。

开始使用Flutter SDK

  1. pubspec.yaml文件中添加rudder_sdk_flutter依赖:
    dependencies:
      rudder_sdk_flutter: ^3.0.0
    
  2. 导航到应用程序的根文件夹,并安装所有必需的依赖项:
    flutter pub get
    

导入RudderClient

添加以下行以导入RudderClient。

import 'package:rudder_sdk_flutter_platform_interface/platform.dart';
import 'package:rudder_sdk_flutter/RudderController.dart';

初始化RudderClient

在应用程序的某个地方添加以下代码:

// 创建配置构建器
RudderConfigBuilder builder = RudderConfigBuilder();
// 设置数据平面URL
builder.withDataPlaneUrl("https://rudderstacgwyx.dataplane.rudderstack.com");
// 设置控制平面URL
builder.withControlPlaneUrl("https://api.rudderlabs.com");
// 设置日志级别为详细
builder.withLogLevel(RudderLogger.VERBOSE);

// 创建选项对象
RudderOption options = RudderOption();
// 启用Amplitude集成
options.putIntegration("Amplitude", true);

// 写入密钥
final String _writeKey = "write_key";
// 初始化RudderClient
rudderClient.initialize(_writeKey, config: builder.build(), options: options);

发送事件

下面是一个示例track调用:

// 创建属性对象
RudderProperty property = RudderProperty();
// 添加属性
property.put("test_key_1", "test_key_1");

// 跟踪事件
client.track("test_track_event", properties: property);

设备令牌

您可以传递设备令牌以支持推送通知的目的地。我们将token设置在context.device.token下。设置device-token的示例如下:

client.putDeviceToken(<DEVICE_TOKEN>);

匿名ID

默认情况下,我们使用deviceId作为anonymousId。您可以使用以下方法覆盖并使用自己的anonymousId与SDK。您需要在调用getInstance之前调用setAnonymousId方法。设置anonymousId的示例如下:

client.putAnonymousId(<ANONYMOUS_ID>);

广告ID

您可以使用setAdvertisingId方法分别传递Android和iOS的AAID和IDFA。setAdvertisingId方法接受一个字符串参数:

  • advertisingId: 您的Android广告ID(AAID)或iOS广告ID(IDFA) 在Android设备上,您需要在调用getInstance之前调用setAdvertisingId方法。 示例用法:
client.putAdvertisingId(<ADVERTISING_ID>);

传递给上述方法的advertisingId参数将在Android设备上被分配为AAID,在iOS设备上被分配为IDFA。有关更详细的文档,请参阅文档页面。

功能列表

  • 从版本2.4.0开始支持数据驻留和自定义上下文
  • 从版本2.5.0开始支持可配置的设备ID收集
  • 从版本2.6.0开始支持数据库加密作为单独的插件
  • 从版本2.8.0开始支持有效负载的Gzip压缩

联系我们

如果您在配置或使用RudderStack时遇到任何问题,请随时联系我们或在我们的Slack频道上发起对话。我们将很乐意帮助您。

完整示例Demo

以下是一个完整的示例,展示了如何在Flutter应用中使用rudder_sdk_flutter插件:

import 'package:flutter/material.dart';
import 'package:rudder_sdk_flutter_platform_interface/platform.dart';
import 'package:rudder_sdk_flutter/RudderController.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  [@override](/user/override)
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  // 初始化RudderClient
  void _initializeRudderClient() {
    RudderConfigBuilder builder = RudderConfigBuilder();
    builder.withDataPlaneUrl("https://rudderstacgwyx.dataplane.rudderstack.com");
    builder.withControlPlaneUrl("https://api.rudderlabs.com");
    builder.withLogLevel(RudderLogger.VERBOSE);

    RudderOption options = RudderOption();
    options.putIntegration("Amplitude", true);

    final String _writeKey = "write_key";
    rudderClient.initialize(_writeKey, config: builder.build(), options: options);
  }

  // 发送事件
  void _sendEvent() {
    RudderProperty property = RudderProperty();
    property.put("test_key_1", "test_value_1");

    client.track("test_track_event", properties: property);
  }

  [@override](/user/override)
  void initState() {
    super.initState();
    _initializeRudderClient();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('RudderStack Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _sendEvent,
          child: Text('Send Event'),
        ),
      ),
    );
  }
}

更多关于Flutter数据分析与追踪插件rudder_sdk_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter数据分析与追踪插件rudder_sdk_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用rudder_sdk_flutter插件进行数据分析和追踪的示例代码。这个示例将展示如何初始化RudderStack SDK,设置用户属性,记录事件,以及屏幕视图追踪。

首先,确保你已经在pubspec.yaml文件中添加了rudder_sdk_flutter依赖:

dependencies:
  flutter:
    sdk: flutter
  rudder_sdk_flutter: ^latest_version  # 请替换为最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中,你可以按照以下步骤使用rudder_sdk_flutter

  1. 初始化RudderStack SDK

在你的应用程序的入口文件(通常是main.dart)中,初始化RudderStack SDK。

import 'package:flutter/material.dart';
import 'package:rudder_sdk_flutter/rudder_sdk_flutter.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化 RudderStack SDK
  RudderClient.instance
    ..config = RudderConfig(
      dataPlaneUrl: 'https://your-data-plane-url.rudderstack.com',  // 替换为你的Data Plane URL
      writeKey: 'your_write_key',  // 替换为你的Write Key
      flushAt: 5,  // 批处理大小
      flushInterval: 60,  // 批处理间隔(秒)
      autoTrackEvents: true,  // 自动追踪屏幕视图等事件
      recordScreenViews: true,  // 自动记录屏幕视图
    )
    ..start();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}
  1. 设置用户属性

你可以在用户登录或注册时设置用户属性。

void setUserProperties() {
  RudderTraits traits = RudderTraits()
    ..email = "user@example.com"
    ..firstName = "John"
    ..lastName = "Doe";

  RudderClient.instance.identify(userId: "user_123", traits: traits);
}
  1. 记录事件

你可以在应用中的不同位置记录自定义事件。

void trackEvent() {
  RudderClient.instance.track(
    eventName: "event_name",
    properties: {
      "key1": "value1",
      "key2": 123,
    },
  );
}
  1. 屏幕视图追踪

如果autoTrackEventsrecordScreenViews设置为true,SDK将自动追踪屏幕视图。但你也可以手动追踪屏幕视图。

void trackScreenView(String screenName) {
  RudderClient.instance.screen(screenName: screenName);
}
  1. 完整示例

将上述功能整合到一个完整的示例中:

import 'package:flutter/material.dart';
import 'package:rudder_sdk_flutter/rudder_sdk_flutter.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  RudderClient.instance
    ..config = RudderConfig(
      dataPlaneUrl: 'https://your-data-plane-url.rudderstack.com',
      writeKey: 'your_write_key',
      flushAt: 5,
      flushInterval: 60,
      autoTrackEvents: true,
      recordScreenViews: true,
    )
    ..start();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    // 设置用户属性
    RudderTraits traits = RudderTraits()
      ..email = "user@example.com"
      ..firstName = "John"
      ..lastName = "Doe";
    RudderClient.instance.identify(userId: "user_123", traits: traits);

    // 记录一个自定义事件
    RudderClient.instance.track(
      eventName: "app_opened",
      properties: {
        "app_version": "1.0.0",
      },
    );

    // 手动追踪屏幕视图(如果autoTrackEvents和recordScreenViews为true,这一步可以省略)
    RudderClient.instance.screen(screenName: "home_screen");
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 在按钮点击时记录一个事件
            trackEvent();
          },
          child: Text('Track Event'),
        ),
      ),
    );
  }

  void trackEvent() {
    RudderClient.instance.track(
      eventName: "button_clicked",
      properties: {
        "button_name": "Track Event",
      },
    );
  }
}

这个示例展示了如何在Flutter应用中使用rudder_sdk_flutter插件进行基本的用户属性设置、事件记录和屏幕视图追踪。你可以根据自己的需求进一步扩展和定制这些功能。

回到顶部