Flutter数据分析插件analysys_e_flutter_plugin的使用

Flutter数据分析插件analysys_e_flutter_plugin的使用


Analysys Flutter SDK

========

这是Analysys的官方Flutter SDK。


开始使用

此项目是一个Flutter插件包的起点,它包含针对Android和/或iOS平台的特定实现代码。

如果您需要开始使用Flutter,请查看我们的在线文档,其中提供了教程、示例、移动开发指南以及完整的API参考。


许可证

GNU通用公共许可证v3.0 (GPL-3.0)


致谢


完整示例代码

以下是一个完整的Flutter示例代码,展示了如何使用analysys_e_flutter_plugin插件来完成常见的数据分析任务。

示例代码

// example/lib/main.dart
import 'package:analysys_e_flutter_plugin/analysys_e_flutter_plugin.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: '方舟SDK',
      theme: new ThemeData(
        primaryColor: Colors.red,
      ),
      home: new DemoApp(),
    );
  }
}

class DemoApp extends StatefulWidget {
  [@override](/user/override)
  State<StatefulWidget> createState() {
    return new SDKDemoList();
  }
}

class SDKDemoList extends State<DemoApp> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text('方舟SDK Demo'),
      ),
      body: _functionList(),
    );
  }

  String _distinctId = ''; // 存储用户的唯一标识符

  // 获取用户的唯一标识符
  Future<void> getDistinctId() async {
    String distinctId;
    distinctId = await AnalysysAgent.getDistinctId(); // 调用插件方法获取distinctId
    setState(() {
      _distinctId = distinctId; // 更新UI
    });
  }

  Widget _functionList() {
    return new ListView(children: <Widget>[
      ListTile(
        title: Text('初始化'),
        onTap: () {
          // 初始化插件
          AnalysysAgent.init({
            'appKey': '930ec2eeef53df04', // 替换为您的AppKey
            'channel': 'App Store'
          });
          AnalysysAgent.setDebugMode(2); // 打开调试模式
          AnalysysAgent.setUploadUrl('https://uba-up.analysysdata.com'); // 设置数据上传地址
        },
      ),
      Divider(color: Colors.grey),
      ListTile(
        title: Text('distinctid:\n' +
            (_distinctId.length > 0 ? _distinctId : '点击获取匿名标识')),
        onTap: () {
          getDistinctId(); // 点击获取distinctId
        },
      ),
      Divider(color: Colors.grey),
      ListTile(
        title: Text('track事件'),
        onTap: () {
          // 跟踪自定义事件
          AnalysysAgent.track('purchase', {'hello': 'ddd'});
        },
      ),
      Divider(color: Colors.grey),
      ListTile(
        title: Text('pageView事件'),
        onTap: () {
          // 页面浏览事件
          AnalysysAgent.pageView('HomePage Title', {'\$url': 'HomePage Url'});
        },
      ),
      Divider(color: Colors.grey),
      ListTile(
        title: Text('pageClose事件'),
        onTap: () {
          // 页面关闭事件
          AnalysysAgent.pageClose('HomePage Title', {'\$url': 'HomePage Url'});
        },
      ),
      Divider(color: Colors.grey),
      ListTile(
        title: Text('alias事件'),
        onTap: () {
          // 设置别名
          AnalysysAgent.alias('18688889999');
        },
      ),
      Divider(color: Colors.grey),
      ListTile(
        title: Text('添加通用属性'),
        onTap: () {
          // 添加全局属性
          AnalysysAgent.registerSuperProperties({'birthday': '1990-1-1'});
        },
      ),
      Divider(color: Colors.grey),
      ListTile(
        title: Text('清理通用属性'),
        onTap: () {
          // 清理所有通用属性(注释掉后使用单个删除)
          // AnalysysAgent.clearSuperProperties();
          AnalysysAgent.unRegisterSuperProperty('birthday');
        },
      ),
      Divider(color: Colors.grey),
      ListTile(
        title: Text('添加用户属性'),
        onTap: () {
          // 设置用户属性
          AnalysysAgent.profileSet({"hobby": "pinpang"});
        },
      ),
      Divider(color: Colors.grey),
      ListTile(
        title: Text('删除用户属性'),
        onTap: () {
          // 删除用户属性(注释掉后使用单个删除)
          // AnalysysAgent.profileDelete();
          AnalysysAgent.profileUnset('hobby');
        },
      ),
      Divider(color: Colors.grey),
      ListTile(
        title: Text('自定义测试代码'),
        onTap: () {
          test();
        },
      ),
      Divider(color: Colors.grey),
    ]);
  }

  void test() {
    // 可在此处添加其他测试代码
  }
}

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

1 回复

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


analysys_e_flutter_plugin 是一个用于 Flutter 应用的数据分析插件,通常用于集成易观分析 SDK 到 Flutter 应用中,以便进行用户行为数据的采集和分析。以下是使用 analysys_e_flutter_plugin 的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 analysys_e_flutter_plugin 插件的依赖:

dependencies:
  analysys_e_flutter_plugin: ^1.0.0 # 请使用最新版本

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

2. 初始化 SDK

在你的 Flutter 应用中初始化易观分析 SDK。通常,你可以在 main.dartmain() 函数中进行初始化:

import 'package:analysys_e_flutter_plugin/analysys_e_flutter_plugin.dart';

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

  // 初始化易观分析 SDK
  AnalysysEFlutterPlugin.init(
    appKey: 'YOUR_APP_KEY', // 替换为你的 App Key
    channel: 'Flutter',     // 渠道标识
    debugMode: true,        // 是否开启调试模式
  );
}

3. 设置用户信息

你可以通过 AnalysysEFlutterPlugin 设置用户信息,例如用户的唯一标识:

AnalysysEFlutterPlugin.setUserId('USER_ID');

你也可以设置用户的其他属性:

AnalysysEFlutterPlugin.profileSet({
  'age': 25,
  'gender': 'male',
});

4. 追踪事件

你可以使用 AnalysysEFlutterPlugin 来追踪用户的行为事件:

AnalysysEFlutterPlugin.track('button_click', {
  'button_name': 'submit',
});

5. 页面追踪

你可以使用 AnalysysEFlutterPlugin 来追踪页面的访问:

AnalysysEFlutterPlugin.pageView('MainPage');

6. 其他功能

analysys_e_flutter_plugin 还提供了其他一些功能,例如:

  • 用户属性管理profileSet, profileSetOnce, profileIncrement, profileAppend, profileUnset, profileDelete 等。
  • 事件追踪track, trackTimerStart, trackTimerEnd, trackTimerPause, trackTimerResume 等。
  • 页面追踪pageView, pageViewWithProperties 等。

7. 调试与日志

在开发过程中,你可以开启调试模式来查看日志:

AnalysysEFlutterPlugin.setDebugMode(true);

8. 发布应用

在发布应用之前,请确保关闭调试模式:

AnalysysEFlutterPlugin.setDebugMode(false);

9. 处理隐私合规

根据相关的隐私法规(如 GDPR),你可能需要在用户同意隐私政策后才能开始数据采集。你可以使用 AnalysysEFlutterPlugin 提供的接口来控制数据采集的开关:

AnalysysEFlutterPlugin.setUploadNetworkType(AnalysysNetworkType.WIFI); // 仅 WiFi 上传
AnalysysEFlutterPlugin.setUploadNetworkType(AnalysysNetworkType.ALL);  // 所有网络上传
回到顶部