Flutter数据分析插件sensors_analytics_flutter_plugin的使用

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

Flutter 数据分析插件 sensors_analytics_flutter_plugin 的使用

神策简介

神策数据(Sensors Data)是一家专业的大数据分析服务公司,致力于帮助客户实现数据驱动。业务覆盖互联网、金融、零售快消等多个行业,并提供深度用户行为分析平台及专业的咨询服务和行业解决方案。

SDK 简介

神策的 sensors_analytics_flutter_plugin 插件封装了 iOS、Android 和 Web SDK 常用 API,可用于完成埋点统计上报。

使用方式

添加依赖

在 Flutter 项目的 pubspec.yaml 文件中添加 sensors_analytics_flutter_plugin 依赖:

dependencies:
  # 添加神策 flutter plugin 
  sensors_analytics_flutter_plugin: ^3.0.1

执行以下命令安装插件:

flutter pub get

集成文档

请参考神策官网提供的 Flutter 插件集成文档

示例代码

下面是一个完整的示例 Demo,展示了如何初始化 SDK 并进行基本的事件跟踪。

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:sensors_analytics_flutter_plugin/sensors_analytics_flutter_plugin.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String? _distinctId = '';

  [@override](/user/override)
  void initState() {
    // 初始化 SDK
    startSensorsAnalyticsSDK();
    initPlatformState();

    super.initState();
  }

  void startSensorsAnalyticsSDK() {
    SensorsAnalyticsFlutterPlugin.init(
        serverUrl: "https://sdkdebugtest.datasink.sensorsdata.cn/sa?project=default&token=cfb8b60e42e0ae9b",
        autoTrackTypes: <SAAutoTrackType>{
          SAAutoTrackType.APP_START,
          SAAutoTrackType.APP_VIEW_SCREEN,
          SAAutoTrackType.APP_CLICK,
          SAAutoTrackType.APP_END
        },
        networkTypes: <SANetworkType>{
          SANetworkType.TYPE_2G,
          SANetworkType.TYPE_3G,
          SANetworkType.TYPE_4G,
          SANetworkType.TYPE_WIFI,
          SANetworkType.TYPE_5G
        },
        flushInterval: 30000,
        flushBulkSize: 150,
        enableLog: true,
        javaScriptBridge: true,
        encrypt: true,
        android: AndroidConfig(maxCacheSize: 48 * 1024 * 1024, jellybean: true, subProcessFlush: true),
        ios: IOSConfig(maxCacheSize: 10000),
        web: WebConfig(
            publicKey: '040db1c4d70c229425134d588cf9d5126815ceda1cb2f72e63f3f29e8974c28d10929d341ee2a21fba224dea13ee2d8b5f98b4bbbd6c887d0bba0a20a190c95c57',
            pkv: 4),
        globalProperties: {'aaa': 'aaa-value', 'bbb': 'bbb-value'},
        autoTrackConfig: SAAutoTrackConfig(pageConfigs: [
          SAAutoTrackPageConfig<Home>(title: '首页', screenName: '首页', properties: {'page': 'home'}),
        ]));
  }

  Future<void> initPlatformState() async {
    String? distinctId = "";

    try {
      distinctId = await SensorsAnalyticsFlutterPlugin.getDistinctId;
    } on PlatformException {
      distinctId = 'Failed to get distinctId.';
    }

    if (!mounted) return;

    setState(() {
      _distinctId = distinctId;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorObservers: SANavigatorObserver.wrap([]),
      initialRoute: '/',
      routes: {
        '/': (context) => Home(),
        '/page2': (context) => Page2(),
        '/page3': (context) => Page3(),
      },
    );
  }
}

// 示例页面
class Home extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('首页')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pushNamed(context, '/page2');
          },
          child: Text('Go to Page 2'),
        ),
      ),
    );
  }
}

class Page2 extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('页面2')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pushNamed(context, '/page3');
          },
          child: Text('Go to Page 3'),
        ),
      ),
    );
  }
}

class Page3 extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('页面3')),
      body: Center(
        child: Text('这是页面3'),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中使用sensors_analytics_flutter_plugin进行数据分析的示例代码。这个插件通常用于集成神策数据(Sensors Analytics)服务,以便在Flutter应用中收集和分析用户行为数据。

首先,确保你已经在pubspec.yaml文件中添加了sensors_analytics_flutter_plugin依赖:

dependencies:
  flutter:
    sdk: flutter
  sensors_analytics_flutter_plugin: ^最新版本号  # 替换为实际最新版本号

然后,运行flutter pub get来安装依赖。

接下来,按照以下步骤在你的Flutter应用中配置和使用这个插件:

  1. 初始化插件

    在你的应用入口文件(通常是main.dart)中初始化插件:

import 'package:flutter/material.dart';
import 'package:sensors_analytics_flutter_plugin/sensors_analytics_flutter_plugin.dart';

void main() {
  // 初始化Sensors Analytics
  SensorsAnalyticsFlutterPlugin.startWithConfig(
    '你的项目ID',  // 替换为你的项目ID
    autoTrack: {
      AutoTrackEventType.appStart: true,
      AutoTrackEventType.appEnd: true,
      AutoTrackEventType.appClick: true,
      // 可以根据需要开启其他自动采集事件
    },
    flushBulkSize: 20,  // 设置批量发送的大小
    flushInterval: 6000, // 设置批量发送的时间间隔,单位为毫秒
  );

  runApp(MyApp());
}

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

    在需要手动追踪用户行为的地方,使用track方法:

import 'package:flutter/material.dart';
import 'package:sensors_analytics_flutter_plugin/sensors_analytics_flutter_plugin.dart';

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 手动追踪一个按钮点击事件
            Map<String, dynamic> properties = {
              '$event_button_id': 'button1',
              '$event_button_name': 'Click Me Button',
            };
            SensorsAnalyticsFlutterPlugin.instance.track('button_click', properties);
          },
          child: Text('Click Me'),
        ),
      ),
    );
  }
}
  1. 页面停留时长自动追踪

    如果你希望自动追踪页面停留时长,可以在页面生命周期方法中调用相应的插件方法:

import 'package:flutter/material.dart';
import 'package:sensors_analytics_flutter_plugin/sensors_analytics_flutter_plugin.dart';

class SomePage extends StatefulWidget {
  @override
  _SomePageState createState() => _SomePageState();
}

class _SomePageState extends State<SomePage> with AutomaticKeepAliveClientMixin {
  @override
  void initState() {
    super.initState();
    // 页面进入时追踪
    SensorsAnalyticsFlutterPlugin.instance.pageStart('SomePage');
  }

  @override
  void dispose() {
    // 页面退出时追踪
    SensorsAnalyticsFlutterPlugin.instance.pageEnd('SomePage');
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    super.build(context);
    return Scaffold(
      appBar: AppBar(
        title: Text('Some Page'),
      ),
      body: Center(
        child: Text('This is Some Page'),
      ),
    );
  }

  @override
  bool get wantKeepAlive => true;
}

请注意,上述代码是一个简化的示例,用于展示如何在Flutter应用中使用sensors_analytics_flutter_plugin进行基本的数据分析和追踪。在实际应用中,你可能需要根据业务需求进行更多的配置和优化。确保替换示例代码中的占位符(如你的项目ID)为实际值。

回到顶部