Flutter数据分析插件eanalytics的使用

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

Flutter数据分析插件eanalytics的使用

初始化

在您的应用的顶层调用Eulerian.init方法以进行初始化。这将尝试同步任何本地存储的失败跟踪请求。

await Eulerian.init('test.domain.dev');

注意:对于iOS设备,您可以选择性地通过传递requestTrackingAuthorization标志来请求跟踪授权。

跟踪事件

要跟踪EAProperties,可以在Flutter应用的任何地方调用Eulerian.track方法。如果POST请求失败,它将被存储在本地存储中以供将来重试。

Eulerian.track([
  EAProducts(path: '/add/products')
    ..addProduct(Product(ref: 'p1', name: 'Product 1', group: 'test_group'))
]);

EAProperties 包括 EACart, EAEstimate, EAOrder, EAProducts, EASearch。还有一些辅助模型用于构建 EAPropertiesAction, Params, Product, Search, SiteCentric

iOS设置

如果您计划使用广告标识符(advertising identifier),请确保更新您的Info.plist文件,并添加NSUserTrackingUsageDescription键,描述您的使用方式。

<key>NSUserTrackingUsageDescription</key>
<string>请求跟踪...</string>

在初始化EAnalytics时,传递requestTrackingAuthorization标志以提示用户进行跟踪授权。

[@override](/user/override)
void initState() {
  Eulerian.init('domain.name', requestTrackingAuthorization: true);
  super.initState();
}

全局EAnalytics属性

EAnalytics会根据您的平台内部处理设置以下属性:

属性名称 EAPropertyKey iOS Android Web
ehw EAPropertyKey.EHW
eos EAPropertyKey.EOS
euidl EAPropertyKey.EUIDL
ea-appname EAPropertyKey.APPNAME
ea-appversion EAPropertyKey.APP_VERSION
url EAPropertyKey.URL
ea-ios-idfv EAPropertyKey.IOS_IDFV
ea-ios-idfa EAPropertyKey.IOS_ADID
ea-android-adid EAPropertyKey.ANDROID_ADID
ereplay-time EAPropertyKey.EPOCH
ea-flutter-sdk-version EAPropertyKey.SDK_VERSION

(*) url属性在iOS上映射到bundleIdentifier,在Android上映射到getPackageName,在Web平台上映射到当前URL路径。

( ) ea-ios-idfv需要在iOS上初始化eanalytics时传递requestTrackingAuthorization标志。

Flutter SDK版本

>=2.12.0 <3.0.0

示例代码

以下是一个完整的示例代码,展示了如何使用eanalytics插件进行事件跟踪。

import 'package:eanalytics/eanalytics.dart' as EAnalytics;
import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(home: Home('EAnalytics Integration')));
}

class Home extends StatefulWidget {
  Home(this.title) : super();
  final String title;

  [@override](/user/override)
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  [@override](/user/override)
  void initState() {
    EAnalytics.Eulerian.init('et.eulerian.net',
        requestTrackingAuthorization: true, enableLogger: true);
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Eulerian Analytics TRACKERS'),
      ),
      body: GridView.count(
        primary: false,
        padding: const EdgeInsets.all(20),
        crossAxisSpacing: 10,
        mainAxisSpacing: 10,
        crossAxisCount: 2,
        children: [
          OutlinedButton(
            onPressed: () => EAnalytics.Eulerian.track([
                EAnalytics.EAProperty(path: '/home')
                  ..setLabel('lbl1,lbl2,,lbl4')
                  ..setCustomParam('cpvKey', 'cpvTest')
                  ..setEmail('johndoe@eulerian.dev')
                  ..setProperty(EAnalytics.SiteCentric()
                    ..addParam('prop', ['foo', 'baz']))
                  ..setCFlag(
                      EAnalytics.SiteCentric()..addParam('cflag_', ['foo']))
            ]),
            child: Text('EAProperty'),
          ),
          OutlinedButton(
            onPressed: () => EAnalytics.Eulerian.track([
              EAnalytics.EAProducts(path: '/add/product')
                ..addProduct(EAnalytics.Product(
                    ref: 'p1',
                    name: 'Product 1',
                    group: 'group_of_doom',
                    parameters: EAnalytics.Params()
                      ..addParam('foo', 'bar')
                      ..addParam('baz', [1, 2, 3])))
            ]),
            child: Text('Single product'),
          ),
          OutlinedButton(
            onPressed: () => EAnalytics.Eulerian.track([
              EAnalytics.EAProducts(path: '/add/products')
                ..setLocation(latitude: 1.234543, longitude: 54.35322)
                ..setAction(
                    EAnalytics.Action(name: 'test', mode: 'in'))
                ..addProduct(EAnalytics.Product(
                    ref: 'p1', name: 'Product 1', group: 'group_of_doom'))
                ..addProduct(EAnalytics.Product(
                    ref: 'p2',
                    name: 'Product 2',
                    group: 'group_of_doom',
                    parameters: EAnalytics.Params()
                      ..addParam('foo', {'baz': 'bar'})))
            ]),
            child: Text('Multiple products'),
          ),
          OutlinedButton(
            onPressed: () => EAnalytics.Eulerian.track([
                EAnalytics.EAActions(path: '')
                  ..setStandalone()
                  ..addAction(
                      EAnalytics.Action(
                          name: 'button1', mode: 'in'))
                  ..addAction(
                      EAnalytics.Action(
                          name: 'lbldisplay', mode: null, label: 'label1,,label3' )
                      ..setParams(
                          EAnalytics.Params()
                          ..addParam('input', 'test')
                          ..addParam('select', 'val1')
                          )
                )
            ]),
            child: Text('StandAloneAction'),
          ),
        ],
      ),
    );
  }
}

更多关于Flutter数据分析插件eanalytics的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter数据分析插件eanalytics的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用eanalytics插件进行数据分析的代码示例。eanalytics是一个假设的数据分析插件,用于说明如何在Flutter中进行集成和使用。实际使用时,你需要参考具体插件的官方文档和API。

首先,确保你的Flutter项目已经创建,并且在pubspec.yaml文件中添加了eanalytics依赖项(注意:以下代码中的eanalytics是假设的,实际使用时请替换为真实插件名称):

dependencies:
  flutter:
    sdk: flutter
  eanalytics: ^latest_version  # 替换为实际插件的最新版本

然后,运行flutter pub get来获取依赖项。

接下来,在Flutter项目的代码中集成eanalytics插件。以下是一个简单的示例,展示如何初始化插件并进行事件追踪:

import 'package:flutter/material.dart';
import 'package:eanalytics/eanalytics.dart';  // 导入eanalytics插件

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Analytics Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  EAnalytics? analytics;

  @override
  void initState() {
    super.initState();
    // 初始化eanalytics插件
    analytics = EAnalytics(
      apiKey: 'your_api_key_here',  // 替换为你的API密钥
    );

    // 配置插件(如果需要)
    analytics?.configure(
      flushInterval: 60,  // 设置数据发送间隔(秒)
      // 其他配置参数...
    );

    // 开始会话(如果需要)
    analytics?.startSession();
  }

  @override
  void dispose() {
    // 结束会话(如果需要)
    analytics?.endSession();
    super.dispose();
  }

  void _trackEvent() {
    // 追踪一个自定义事件
    analytics?.trackEvent(
      eventName: 'button_clicked',
      properties: {
        'button_name': 'submit',
        'category': 'user_action',
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Analytics Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _trackEvent,
          child: Text('Track Event'),
        ),
      ),
    );
  }
}

在这个示例中,我们完成了以下步骤:

  1. pubspec.yaml文件中添加了eanalytics依赖项。
  2. MyApphome页面中初始化了EAnalytics实例,并配置了必要的参数(如API密钥和发送间隔)。
  3. 提供了一个按钮,当用户点击该按钮时,会调用_trackEvent方法追踪一个自定义事件。

请注意,EAnalytics类及其方法(如trackEventconfigurestartSessionendSession)是假设的,实际使用时请参考具体插件的API文档。

此外,确保你遵循插件的隐私政策和最佳实践,以保护用户数据的安全和隐私。

回到顶部