Flutter点击流分析插件clickstream_analytics的使用
Flutter点击流分析插件clickstream_analytics的使用
引言
Clickstream Flutter SDK可以帮助您轻松地从移动应用程序收集和报告事件到AWS。该SDK是AWS解决方案的一部分——Clickstream Analytics on AWS,它提供了数据管道以将事件数据摄入并处理到AWS服务如S3、Redshift。
该SDK依赖于Clickstream Android SDK和Clickstream Swift SDK。因此,Flutter SDK也支持自动收集常见的用户事件和属性(例如,会话开始、首次打开)。此外,我们还添加了简单易用的API来简化在Flutter应用中的数据收集。
访问我们的文档站点了解更多关于Clickstream Flutter SDK的信息。
集成SDK
包含SDK
flutter pub add clickstream_analytics
完成后,重新构建您的Flutter应用:
flutter run
初始化SDK
复制您从点击流解决方案Web控制台获取的配置代码,配置代码应如下所示。您也可以手动添加此代码片段,并在注册应用到点击流分析解决方案控制台后替换appId
和endpoint
的值。
import 'package:clickstream_analytics/clickstream_analytics.dart';
final analytics = ClickstreamAnalytics();
analytics.init(
appId: "your appId",
endpoint: "https://example.com/collect"
);
请注意以下几点:
appId
和endpoint
已经在其中设置好了。- 我们只需要在应用启动后初始化SDK一次,建议在App的主函数中执行。
- 可以使用
bool result = await analytics.init()
来获取初始化结果的布尔值。
开始使用
记录事件
在需要记录事件的地方添加以下代码。
import 'package:clickstream_analytics/clickstream_analytics.dart';
final analytics = ClickstreamAnalytics();
// 使用属性记录事件
analytics.record(name: 'button_click', attributes: {
"event_category": "shoes",
"currency": "CNY",
"value": 279.9
});
// 仅使用名称记录事件
analytics.record(name: "button_click");
登录和登出
/// 当用户登录成功时
analytics.setUserId("userId");
/// 当用户登出时
analytics.setUserId(null);
添加用户属性
analytics.setUserAttributes({
"userName": "carl",
"userAge": 22
});
当前登录用户的属性将缓存在磁盘上,因此下次应用启动时不需要再次设置所有用户的属性。当然,当属性发生变化时,可以使用相同的API analytics.setUserAttributes()
更新当前用户的属性。
添加全局属性
初始化SDK时添加全局属性
以下示例代码展示了如何在初始化SDK时添加流量来源字段作为全局属性。
analytics.init({
appId: "your appId",
endpoint: "https://example.com/collect",
globalAttributes: {
Attr.TRAFFIC_SOURCE_SOURCE: "amazon",
Attr.TRAFFIC_SOURCE_MEDIUM: "cpc",
Attr.TRAFFIC_SOURCE_CAMPAIGN: "summer_promotion",
Attr.TRAFFIC_SOURCE_CAMPAIGN_ID: "summer_promotion_01",
Attr.TRAFFIC_SOURCE_TERM: "running_shoes",
Attr.TRAFFIC_SOURCE_CONTENT: "banner_ad_1",
Attr.TRAFFIC_SOURCE_CLID: "amazon_ad_123",
Attr.TRAFFIC_SOURCE_CLID_PLATFORM: "amazon_ads",
Attr.APP_INSTALL_CHANNEL: "amazon_store"
}
});
初始化SDK后添加全局属性
analytics.addGlobalAttributes({
Attr.TRAFFIC_SOURCE_MEDIUM: "Search engine",
"level": 10
});
删除全局属性
analytics.deleteGlobalAttributes(["level"]);
建议在每次SDK初始化后设置全局属性,全局属性将在设置之后的所有事件中包含。
记录带有项目的事件
您可以添加以下代码以记录带有项目的事件。您可以在attributes
对象中添加自定义项目属性。
注意: 只有版本1.1以上的管道才能处理具有自定义属性的项目。
var itemBook = ClickstreamItem(
id: "123",
name: "Nature",
category: "book",
price: 99,
attributes: {
"book_publisher": "Nature Research"
}
);
analytics.record(
name: "view_item",
attributes: {
Attr.VALUE: 99,
Attr.CURRENCY: "USD"
"event_category": "recommended"
},
items: [itemBook]
);
手动记录屏幕视图事件
默认情况下,SDK会在Android Activity触发onResume
或iOS ViewController触发viewDidAppear
时自动跟踪预设的_screen_view
事件。
您也可以手动记录屏幕视图事件,无论是否启用了自动屏幕视图跟踪功能,添加以下代码以记录带有两个属性的屏幕视图事件。
screenName
必须。您的屏幕名称。screenUniqueId
可选。设置您的Widget的ID。如果不设置,SDK将根据当前Activity或ViewController的哈希码设置一个默认值。
analytics.recordScreenView(
screenName: 'Main',
screenUniqueId: '123adf',
attributes: { ... }
);
其他配置
除了必需的appId
和endpoint
外,还可以配置其他信息以获得更个性化的使用体验:
final analytics = ClickstreamAnalytics();
analytics.init(
appId: "your appId",
endpoint: "https://example.com/collect",
isLogEvents: false,
isCompressEvents: false,
sendEventsInterval: 10000,
isTrackScreenViewEvents: true,
isTrackUserEngagementEvents: true,
isTrackAppExceptionEvents: false,
authCookie: "your auth cookie",
sessionTimeoutDuration: 1800000,
globalAttributes: {
"_traffic_source_medium": "Search engine",
},
);
以下是每个选项的解释:
- appId (必需):您的项目在控制面板中的应用ID。
- endpoint (必需):您将事件上传到Clickstream摄入服务器的端点路径。
- isLogEvents:是否打印事件JSON用于调试,默认为false。
- isCompressEvents:上传事件时是否压缩事件内容,默认为
true
。 - sendEventsInterval:事件发送间隔毫秒数,仅在批量发送模式下有效,默认为
5000
。 - isTrackScreenViewEvents:是否自动记录应用中的屏幕视图事件,默认为
true
。 - isTrackUserEngagementEvents:是否自动记录应用中的用户参与事件,默认为
true
。 - isTrackAppExceptionEvents:是否自动跟踪应用中的异常事件,默认为
false
。 - authCookie:您的AWS应用负载均衡器认证cookie。
- sessionTimeoutDuration:会话超时的持续时间毫秒数,默认为1800000。
- globalAttributes:在初始化SDK时设置的全局属性。
配置更新
您可以在初始化SDK后更新默认配置,以下是可以自定义的附加配置选项。
final analytics = ClickstreamAnalytics();
analytics.updateConfigure(
appId: "your appId",
endpoint: "https://example.com/collect",
isLogEvents: true,
isCompressEvents: false,
isTrackScreenViewEvents: false
isTrackUserEngagementEvents: false,
isTrackAppExceptionEvents: false,
authCookie: "test cookie");
立即发送事件
final analytics = ClickstreamAnalytics();
analytics.flushEvents();
禁用SDK
您可以在需要的情况下禁用SDK。禁用SDK后,SDK将不会处理任何事件的日志记录和发送。当然,当需要继续日志记录事件时,可以启用SDK。
final analytics = ClickstreamAnalytics();
// 禁用SDK
analytics.disable();
// 启用SDK
analytics.enable();
如何本地构建和测试
构建
安装Flutter包:
flutter pub get
为Android构建:
cd example && flutter build apk
为iOS构建:
cd example && flutter build ios
格式化和检查
dart format . && flutter analyze
测试
flutter test
更多关于Flutter点击流分析插件clickstream_analytics的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter点击流分析插件clickstream_analytics的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用clickstream_analytics
插件的示例代码案例。这个插件可以帮助你实现点击流分析,追踪用户在应用中的交互行为。
首先,确保你已经在pubspec.yaml
文件中添加了clickstream_analytics
依赖:
dependencies:
flutter:
sdk: flutter
clickstream_analytics: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
接下来,你可以按照以下步骤在你的Flutter应用中使用这个插件:
- 初始化插件:
在你的应用的入口文件(通常是main.dart
)中初始化ClickstreamAnalytics
。
import 'package:flutter/material.dart';
import 'package:clickstream_analytics/clickstream_analytics.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
ClickstreamAnalytics.initialize(
apiKey: '你的API_KEY', // 替换为你的API密钥
flushInterval: 5, // 设置数据发送间隔(秒)
enableLogging: true, // 是否启用日志记录
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Clickstream Analytics Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
- 追踪用户交互:
在你的应用中,你可以使用ClickstreamAnalytics
的方法来追踪各种用户交互事件。例如,追踪按钮点击事件:
import 'package:flutter/material.dart';
import 'package:clickstream_analytics/clickstream_analytics.dart';
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Clickstream Analytics Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 追踪按钮点击事件
ClickstreamAnalytics.trackEvent(
eventName: 'button_clicked',
eventProperties: {
'button_name': 'example_button',
},
);
},
child: Text('Click Me'),
),
),
);
}
}
- 发送屏幕视图事件:
你还可以追踪用户查看不同屏幕的事件。例如,在MyHomePage
的initState
方法中发送屏幕视图事件:
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
// 追踪屏幕视图事件
ClickstreamAnalytics.screenView(screenName: 'MyHomePage');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Clickstream Analytics Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
ClickstreamAnalytics.trackEvent(
eventName: 'button_clicked',
eventProperties: {
'button_name': 'example_button',
},
);
},
child: Text('Click Me'),
),
),
);
}
}
通过上述代码,你已经成功地在Flutter应用中集成了clickstream_analytics
插件,并且可以追踪用户的点击事件和屏幕视图事件。请根据你的实际需求调整事件名称和属性。
注意:在实际使用中,请确保你遵守相关的隐私政策和数据保护法规,特别是关于用户数据收集和使用的规定。