Flutter数据分析插件thinking_analytics的使用

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

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

1 回复

更多关于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提供了丰富的功能,如用户属性设置、预置事件跟踪等,你可以根据需求查阅官方文档以了解更多高级用法。

回到顶部