Flutter数据分析与追踪插件rudder_sdk_flutter的使用
Flutter数据分析与追踪插件rudder_sdk_flutter的使用
什么是Rudder?
简短回答: Rudder是一个用Go编写的开源Segment替代品,专为企业打造。
详细回答: Rudder是一个用于收集、存储和路由客户事件数据到多个工具的平台。Rudder是开源的,可以在您的云环境中运行(AWS、GCP、Azure甚至您的数据中心),并提供一个强大的转换框架来实时处理您的事件数据。
发布在MIT许可下。
开始使用Flutter SDK
- 在
pubspec.yaml
文件中添加rudder_sdk_flutter
依赖:dependencies: rudder_sdk_flutter: ^3.0.0
- 导航到应用程序的根文件夹,并安装所有必需的依赖项:
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
更多关于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
:
- 初始化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(),
);
}
}
- 设置用户属性
你可以在用户登录或注册时设置用户属性。
void setUserProperties() {
RudderTraits traits = RudderTraits()
..email = "user@example.com"
..firstName = "John"
..lastName = "Doe";
RudderClient.instance.identify(userId: "user_123", traits: traits);
}
- 记录事件
你可以在应用中的不同位置记录自定义事件。
void trackEvent() {
RudderClient.instance.track(
eventName: "event_name",
properties: {
"key1": "value1",
"key2": 123,
},
);
}
- 屏幕视图追踪
如果autoTrackEvents
和recordScreenViews
设置为true
,SDK将自动追踪屏幕视图。但你也可以手动追踪屏幕视图。
void trackScreenView(String screenName) {
RudderClient.instance.screen(screenName: screenName);
}
- 完整示例
将上述功能整合到一个完整的示例中:
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
插件进行基本的用户属性设置、事件记录和屏幕视图追踪。你可以根据自己的需求进一步扩展和定制这些功能。