Flutter数据分析插件flutter_analytics_piwik的使用

Flutter数据分析插件flutter_analytics_piwik的使用

SDK 配置

服务器

您需要在云端或本地环境中拥有一个 Piwik PRO 账户,您的移动应用将与之通信。详情请访问 Piwik PRO 网站。

客户端

运行此命令:

$ flutter pub add flutter_analytics_piwik

配置

在使用任何其他方法之前,您需要配置跟踪器。为此,您需要您的跟踪服务器的基本 URL 地址和网站 ID(您可以在网站界面的 Administration > Websites & apps > Installation 中找到它)。

修复

该包修复了原版包在 iOS 上遇到的问题。

使用

请检查示例文件夹中的内容。

要查看 /example 文件夹中的内容,请参考以下代码示例:

// ignore_for_file: avoid_print

import 'package:flutter/material.dart';
import 'package:flutter_analytics_piwik/flutter_piwikpro.dart';
import 'package:flutter_analytics_piwik/model/ecommerce_transaction_item.dart';

void main() {
  final ecommerceTransactionItems = [
    EcommerceTransactionItem(category: 'cat1', sku: 'sku1', name: 'name1', price: 20, quantity: 1),
    EcommerceTransactionItem(category: 'cat2', sku: 'sku2', name: 'name2', price: 10, quantity: 1),
    EcommerceTransactionItem(category: 'cat3', sku: 'sku3', name: 'name3', price: 30, quantity: 2),
  ];
  // 替换为您的跟踪服务器的值
  const String siteId = '0c0a8661-8c10-4f59-b8fc-1c926cbac184';
  const String baseUrl = 'https://astralprojection.promilci.com';
  final flutterPiwik = FlutterPiwikPro.sharedInstance;

  runApp(MyApp(
    ecommerceTransactionItems: ecommerceTransactionItems,
    siteId: siteId,
    baseUrl: baseUrl,
    flutterPiwik: flutterPiwik,
  ));
}

class MyApp extends StatelessWidget {
  const MyApp({
    required this.ecommerceTransactionItems,
    required this.siteId,
    required this.baseUrl,
    required this.flutterPiwik,
    Key? key,
  }) : super(key: key);

  final List<EcommerceTransactionItem> ecommerceTransactionItems;
  final String siteId;
  final String baseUrl;
  final FlutterPiwikPro flutterPiwik;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Padding(
          padding: const EdgeInsets.only(left: 32.0, right: 32.0, bottom: 32.0),
          child: Center(
            child: SingleChildScrollView(
              child: Column(
                children: [
                  _buildTextWidget('配置跟踪器', () async {
                    try {
                      final result = await flutterPiwik.configureTracker(baseURL: baseUrl, siteId: siteId);
                      print(result);
                    } catch (exception) {
                      print(exception);
                    }
                  }),
                  _buildTextWidget('设置匿名化状态为真', () async {
                    final result = await flutterPiwik.setAnonymizationState(true);
                    print(result);
                  }),
                  _buildTextWidget(
                    '跟踪屏幕',
                    () async {
                      try {
                        final result = await flutterPiwik.trackScreen(screenName: "test", title: "test title");
                        print(result);
                      } catch (exception) {
                        print(exception);
                      }
                    },
                  ),
                  _buildTextWidget('跟踪自定义事件', () async {
                    try {
                      final result = await flutterPiwik.trackCustomEvent(
                          action: 'test action',
                          category: 'test category',
                          name: 'test name',
                          path: 'test path',
                          value: 120);
                      print(result);
                    } catch (exception) {
                      print(exception);
                    }
                  }),
                  _buildTextWidget('跟踪异常', () async {
                    try {
                      final result =
                          await flutterPiwik.trackException(description: "描述异常", isFatal: false);
                      print(result);
                    } catch (exception) {
                      print(exception);
                    }
                  }),
                  _buildTextWidget('跟踪下载', () async {
                    try {
                      final result = await flutterPiwik.trackDownload('http://your.server.com/bonusmap2.zip');
                      print(result);
                    } catch (exception) {
                      print(exception);
                    }
                  }),
                  _buildTextWidget('跟踪电子商务交易', () async {
                    final result = await flutterPiwik.trackEcommerceTransaction(
                      identifier: "testId",
                      grandTotal: 100,
                      subTotal: 10,
                      tax: 5,
                      shippingCost: 100,
                      discount: 6,
                      transactionItems: ecommerceTransactionItems,
                    );
                    print(result);
                  }),
                  _buildTextWidget('跟踪社交互动', () async {
                    final result = await flutterPiwik.trackSocialInteraction(
                        network: "facebook", interaction: "like", target: 'Target');
                    print(result);
                  }),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }

  Widget _buildTextWidget(String title, VoidCallback? onPressed) {
    return TextButton(
      onPressed: onPressed,
      child: Container(
        color: Colors.blue,
        child: Text(
          title,
          style: const TextStyle(color: Colors.white),
        ),
      ),
    );
  }
}

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

1 回复

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


flutter_analytics_piwik 是一个用于在 Flutter 应用中集成 Piwik 数据分析的插件。Piwik 是一个开源的分析平台,可以帮助你跟踪和分析用户行为。通过 flutter_analytics_piwik,你可以在 Flutter 应用中轻松集成 Piwik 的功能。

以下是使用 flutter_analytics_piwik 的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_analytics_piwik: ^1.0.0  # 请确认使用最新版本

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

2. 初始化 Piwik

在你的 Flutter 应用中初始化 Piwik。通常,你可以在 main.dart 文件中的 main 函数中进行初始化。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化 Piwik
  await FlutterAnalyticsPiwik().initialize(
    siteId: 'YOUR_SITE_ID', // 你的 Piwik 站点 ID
    piwikUrl: 'https://YOUR_PIWIK_URL.com', // 你的 Piwik 服务器 URL
  );

  runApp(MyApp());
}

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

3. 跟踪页面视图

你可以在应用的不同页面中跟踪页面视图。通常,你可以在 initStatedidChangeDependencies 中调用 trackPageView 方法。

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

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    // 跟踪页面视图
    FlutterAnalyticsPiwik().trackPageView('HomePage');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Page'),
      ),
      body: Center(
        child: Text('Hello, World!'),
      ),
    );
  }
}

4. 跟踪自定义事件

你还可以跟踪自定义事件,例如按钮点击、用户交互等。

FlutterAnalyticsPiwik().trackEvent(
  category: 'Button',
  action: 'Click',
  name: 'LoginButton',
  value: 1,
);

5. 用户 ID 和会话管理

你可以设置用户 ID 来跟踪特定用户的行为,以及管理会话。

// 设置用户 ID
FlutterAnalyticsPiwik().setUserId('USER_ID');

// 开始新会话
FlutterAnalyticsPiwik().startNewSession();

6. 调试和测试

在开发过程中,你可以启用调试模式来查看日志输出,确保跟踪数据正确发送。

FlutterAnalyticsPiwik().setDebug(true);

7. 处理隐私和合规性

确保你的应用符合隐私法规(如 GDPR)。你可以在用户同意的情况下启用或禁用跟踪。

// 禁用跟踪
FlutterAnalyticsPiwik().setOptOut(true);

// 启用跟踪
FlutterAnalyticsPiwik().setOptOut(false);
回到顶部