Flutter点击流分析插件clickstream_analytics的使用

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

Flutter点击流分析插件clickstream_analytics的使用

引言

Clickstream Flutter SDK可以帮助您轻松地从移动应用程序收集和报告事件到AWS。该SDK是AWS解决方案的一部分——Clickstream Analytics on AWS,它提供了数据管道以将事件数据摄入并处理到AWS服务如S3、Redshift。

该SDK依赖于Clickstream Android SDKClickstream Swift SDK。因此,Flutter SDK也支持自动收集常见的用户事件和属性(例如,会话开始、首次打开)。此外,我们还添加了简单易用的API来简化在Flutter应用中的数据收集。

访问我们的文档站点了解更多关于Clickstream Flutter SDK的信息。

集成SDK

包含SDK

flutter pub add clickstream_analytics

完成后,重新构建您的Flutter应用:

flutter run

初始化SDK

复制您从点击流解决方案Web控制台获取的配置代码,配置代码应如下所示。您也可以手动添加此代码片段,并在注册应用到点击流分析解决方案控制台后替换appIdendpoint的值。

import 'package:clickstream_analytics/clickstream_analytics.dart';

final analytics = ClickstreamAnalytics();
analytics.init(
  appId: "your appId",
  endpoint: "https://example.com/collect"
);

请注意以下几点:

  1. appIdendpoint 已经在其中设置好了。
  2. 我们只需要在应用启动后初始化SDK一次,建议在App的主函数中执行。
  3. 可以使用 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: { ... }
);
其他配置

除了必需的appIdendpoint外,还可以配置其他信息以获得更个性化的使用体验:

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

1 回复

更多关于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应用中使用这个插件:

  1. 初始化插件

在你的应用的入口文件(通常是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(),
    );
  }
}
  1. 追踪用户交互

在你的应用中,你可以使用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'),
        ),
      ),
    );
  }
}
  1. 发送屏幕视图事件

你还可以追踪用户查看不同屏幕的事件。例如,在MyHomePageinitState方法中发送屏幕视图事件:

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插件,并且可以追踪用户的点击事件和屏幕视图事件。请根据你的实际需求调整事件名称和属性。

注意:在实际使用中,请确保你遵守相关的隐私政策和数据保护法规,特别是关于用户数据收集和使用的规定。

回到顶部