Flutter数据分析插件thinking_analytics的使用
Flutter数据分析插件thinking_analytics的使用
本文将介绍如何在Flutter应用中使用thinking_analytics
插件进行数据分析。通过本指南,您可以了解如何初始化SDK、启用自动跟踪、发送事件以及管理用户属性等。
初始化SDK
首先,确保在您的项目中已经添加了thinking_analytics
依赖。在pubspec.yaml
文件中添加以下依赖:
dependencies:
thinking_analytics: ^最新版本号
然后运行flutter pub get
以安装该依赖。
接下来,我们需要初始化SDK。以下是一个完整的初始化示例:
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:thinking_analytics/thinking_analytics.dart';
import 'package:thinking_analytics/td_analytics.dart';
void main() => runApp(new MaterialApp(home: MyApp()));
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
initThinkingDataSDK();
}
Future<void> initThinkingDataSDK() async {
if (!mounted) return;
TDAnalytics.enableLog(true);
TDConfig config = TDConfig();
config.appId = "40eddce753cd4bef9883a01e168c3df0";
config.serverUrl = "https://receiver-ta-preview.thinkingdata.cn";
config.setMode(TDMode.NORMAL);
config.enableEncrypt(1,
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAti6FnWGv7Lggzg/R8hQa4GEtd2ucfntqo6Xkf1sPwCIfndr2u6KGPhWQ24bFUKgtNLDuKnUAg1C/OEEL8uONJBdbX9XpckO67tRPSPrY3ufNIxsCJ9td557XxUsnebkOZ+oC1Duk8/ENx1pRvU6S4c+UYd6PH8wxw1agD61oJ0ju3CW0aZNZ2xKcWBcIU9KgYTeUtawrmGU5flod88CqZc8VKB1+nY0tav023jvxwkM3zgQ6vBWIU9/aViGECB98YEzJfZjcOTD6zvqsZc/WRnUNhBHFPGEwc8ueMvzZNI+FP0pUFLVRwVoYbj/tffKbxGExaRFIcgP73BIW6/6nQwIDAQAB");
TDAnalytics.initWithConfig(config);
}
@override
Widget build(BuildContext context) {
List<Widget> buttons = [
// 按钮列表
];
return MaterialApp(
theme: ThemeData(),
home: Scaffold(
appBar: AppBar(
title: const Text('单实例测试'),
),
body: Container(
child: new CustomScrollView(shrinkWrap: true, slivers: <Widget>[
new SliverPadding(
padding: const EdgeInsets.all(2.0),
sliver: new SliverList(
delegate: new SliverChildListDelegate(
buttons,
),
),
),
])),
),
);
}
// 其他方法定义
}
启用自动跟踪
自动跟踪可以收集一些默认的事件,如应用启动、关闭等。以下是如何启用自动跟踪的示例:
/// 自动采集
void enableAutoTrack() {
TDAnalytics.enableAutoTrack(TDAutoTrackEventType.APP_START |
TDAutoTrackEventType.APP_END |
TDAutoTrackEventType.APP_INSTALL |
TDAutoTrackEventType.APP_CRASH);
}
/// 自动采集+参数
void enableAutoTrackAndProperties() {
TDAnalytics.enableAutoTrack(
TDAutoTrackEventType.APP_START | TDAutoTrackEventType.APP_END,
autoTrackEventProperties: {"auto_name": "jack", "auto_age": 19});
}
发送事件
您可以发送各种类型的事件,例如测试事件、首次事件、可更新事件等。以下是一些示例:
/// 发送测试事件
void trackTestEvent() {
TDAnalytics.track("test_event_111", properties: {
'PROP_INT': 5678,
'PROP_DOUBLE': 12.3,
'PROP_DATE': DateTime.now().toUtc(),
'PROP_LIST': ['apple', 'ball', 1234],
'PROP_BOOL': false,
'PROP_STRING': 'flutter test',
});
}
/// 发送首次事件
void trackFirstEvent() {
var properties = {
'PROP_INT': 5678,
'PROP_DOUBLE': 12.3,
'PROP_DATE': DateTime.now().toUtc(),
'PROP_LIST': ['apple', 'ball', 1234],
'PROP_BOOL': false,
'PROP_STRING': 'flutter test',
};
TDFirstEventModel model = TDFirstEventModel("fist_event", "f_1233", properties);
TDAnalytics.trackEventModel(model);
}
/// 发送可更新事件
void trackUpdateEvent() {
var properties = {
'PROP_INT': 5678,
'PROP_DOUBLE': 12.3,
'PROP_DATE': DateTime.now().toUtc(),
'PROP_LIST': ['apple', 'ball', 1234],
'PROP_BOOL': false,
'PROP_STRING': 'flutter test',
};
TDUpdatableEventModel model = TDUpdatableEventModel("update_event", "event_id_123", properties);
TDAnalytics.trackEventModel(model);
}
管理用户属性
用户属性可以帮助您更好地了解用户的行为。以下是一些常见的用户属性操作:
/// 设置用户属性
void userSet() {
TDAnalytics.userSet({'user_name': 'TA'});
}
/// 设置一次性用户属性
void userSetOnce() {
TDAnalytics.userSetOnce({'first_payment_time': '2018-01-01 01:23:45.678'});
}
/// 删除用户属性
void userUnset() {
TDAnalytics.userUnset("USER_INT");
}
/// 添加用户属性
void userAdd() {
TDAnalytics.userAdd({'total_revenue': 30});
}
/// 追加用户属性
void userAppend() {
TDAnalytics.userAppend({
'USER_LIST': ['apple', 'ball'],
});
}
/// 追加唯一用户属性
void userUniqAppend() {
TDAnalytics.userUniqAppend({
'user_list': ['apple', 'ball']
});
}
/// 删除所有用户属性
void userDelete() {
TDAnalytics.userDelete();
}
公共属性
公共属性可以在多个事件中重复使用,避免重复输入相同的属性值。
/// 设置静态公共属性
void setSuperProperties() {
TDAnalytics.setSuperProperties({'vip_level': 21, "super_level": 991});
}
/// 设置动态公共属性
void setDynamicProperties() {
TDAnalytics.setDynamicSuperProperties(() {
return {
'DYNAMIC_DATE': DateTime.now().toUtc(),
};
});
}
/// 清除一个属性
void clearOneProperties() {
TDAnalytics.unsetSuperProperty("vip_level");
}
/// 清除所有公共属性
void clearAllSuperProperties() {
TDAnalytics.clearSuperProperties();
}
/// 获取公共属性
void getSuperProperties() async {
var map = await TDAnalytics.getSuperProperties();
print("ThinkingAnalytics: " + map.toString());
}
/// 获取预置属性
void getPresetProperties() async {
var map = await TDAnalytics.getPresetProperties();
print("ThinkingAnalytics: " + map.toString());
}
登录与登出
登录和登出功能可以帮助您追踪用户的登录状态。
/// 登录
void login() {
TDAnalytics.login("llb_1234");
TDAnalytics.track("sign_up");
}
/// 登出
void logout() {
TDAnalytics.logout();
TDAnalytics.track("sign_out");
}
访客ID管理
访客ID可以帮助您追踪匿名用户。
/// 设置访客
void setDistinctId() {
TDAnalytics.setDistinctId("identify_123");
TDAnalytics.track("sign_in");
}
/// 获取访客
void getDistinctId() async {
String? distinctId = await TDAnalytics.getDistinctId();
print("ThinkingAnalytics: " + distinctId.toString());
}
/// 获取设备号
void getDeviceId() async {
String? deviceId = await TDAnalytics.getDeviceId();
print("ThinkingAnalytics: " + deviceId.toString());
}
跟踪状态管理
跟踪状态管理可以帮助您控制事件的发送状态。
/// 设置跟踪状态
void setTrackStatus1(TDTrackStatus status) {
TDAnalytics.setTrackStatus(status);
}
第三方数据共享
第三方数据共享可以帮助您与其他平台分享数据。
/// 启用第三方数据共享
void enableThirdParty() {
TDAnalytics.enableThirdPartySharing(TDThirdPartyType.APPS_FLYER |
TDThirdPartyType.ADJUST |
TDThirdPartyType.BRANCH |
TDThirdPartyType.IRON_SOURCE |
TDThirdPartyType.TOP_ON |
TDThirdPartyType.TRACKING |
TDThirdPartyType.TRAD_PLUS |
TDThirdPartyType.APPLOVIN_IMPRESSION);
}
多实例支持
如果您需要同时处理多个实例,可以使用多实例模式。
/// 创建轻实例
String? lightAppId;
void lightInstance() async {
lightAppId = await TDAnalytics.lightInstance();
}
/// 使用轻实例发送事件
void trackLightEvent() {
TDAnalytics.track("light_event", appId: lightAppId);
}
/// 使用轻实例设置用户属性
void trackLightUserSet() {
TDAnalytics.userSet({"light_name": "mace"}, appId: lightAppId);
}
WebView集成
如果您需要在WebView中集成thinking_analytics
,可以通过以下方式实现。
/// WebView集成
void webViewIntegration() {
Navigator.push(context, MaterialPageRoute(builder: (context) => MyWebView()));
}
更多关于Flutter数据分析插件thinking_analytics的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据分析插件thinking_analytics的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用thinking_analytics
插件进行数据分析的简单示例。thinking_analytics
是一个用于Flutter的数据分析插件,可以帮助你集成Thinking Analytics的服务,以便跟踪和分析用户行为。
首先,你需要在你的Flutter项目中添加thinking_analytics
依赖。打开你的pubspec.yaml
文件,并在dependencies部分添加以下行:
dependencies:
flutter:
sdk: flutter
thinking_analytics: ^最新版本号 # 请替换为实际发布的最新版本号
然后运行flutter pub get
来获取依赖。
接下来,你需要在你的应用中初始化Thinking Analytics并发送事件。以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:thinking_analytics/thinking_analytics.dart';
void main() {
// 初始化Thinking Analytics
ThinkingAnalytics.instance.init('你的项目ID', '你的服务器地址');
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Thinking Analytics Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Thinking Analytics Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'0',
style: Theme.of(context).textTheme.headline4,
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
// 增加按钮点击事件计数
setState(() {
// 这里省略了实际的计数逻辑,仅展示事件发送
_trackButtonClick();
});
},
child: Text('Track Button Click'),
),
],
),
),
);
}
void _trackButtonClick() {
// 发送自定义事件
Map<String, dynamic> eventProperties = {
'button_name': 'track_button',
};
ThinkingAnalytics.instance.track('button_click', eventProperties);
// 你可以在控制台查看这个事件以及它的属性
print('Button click event tracked.');
}
}
在这个示例中,我们首先初始化了Thinking Analytics,指定了项目ID和服务器地址。然后,我们创建了一个简单的Flutter应用,其中包含一个按钮。当用户点击按钮时,我们会调用_trackButtonClick
方法来发送一个名为button_click
的自定义事件,并附带一些属性(在这个例子中是button_name
)。
请注意,你需要将你的项目ID
和你的服务器地址
替换为你自己的Thinking Analytics项目ID和服务器地址。
这个示例仅展示了基本的用法。Thinking Analytics提供了丰富的功能,如用户属性设置、预置事件跟踪等,你可以根据需求查阅官方文档以了解更多高级用法。