Flutter百度移动统计插件flutter_baidu_mob_stat的使用

Flutter百度移动统计插件flutter_baidu_mob_stat的使用

百度移动统计Flutter插件

百度移动统计Flutter插件可以帮助开发者快速集成百度移动统计功能到Flutter应用中,用于跟踪用户行为、事件及页面访问等。

开始使用

注册key

在使用插件之前,需要先注册API Key。通过以下代码可以完成初始化:

Future<void> fun() async {
  final bool key = await FlBaiduMobStat().setApiKey(
      androidKey: 'androidKey', iosKey: 'iosKey');
  print('初始化是否成功:$key');
}
设置channel(可选)

可以通过以下代码设置应用渠道名称:

Future<void> fun() async {
   final bool channel = await FlBaiduMobStat().setAppChannel(channelName);
   print('设置channel:$channelName = $channel');
}
设置version(可选)

设置应用版本号:

Future<void> fun() async {
    final bool version = await FlBaiduMobStat().setAppVersionName('1.0.0');
    print('设置version name:$version');
}
是否开启debug模式(可选)

开启调试模式以便查看日志信息:

Future<void> fun() async {
     final bool debug = await FlBaiduMobStat().setDebug(true);
     print('设置是否开启debug模式:$debug');
}
获取SDK生成的设备的测试ID

获取设备的测试ID:

Future<void> fun()async{
   final String? id = await FlBaiduMobStat().getTestDeviceId();
}
获取SDK生成的设备的cuId(仅限Android)

获取设备的cuId:

Future<void> fun()async{
   final String? id = await FlBaiduMobStat().getDeviceCuId();
}
记录一次事件的点击

记录事件点击:

Future<void> fun()async{
   final bool state = await FlBaiduMobStat().logEvent(
                       eventId: 'Event1',
                       attributes: {'k1': 'v1', 'k2': 'v2'});
}
记录一次事件的时长

记录事件的持续时间:

Future<void> fun()async{
   final bool state = await FlBaiduMobStat().logDurationEvent(
                     eventId: 'Event2',
                     duration: 3000,
                     label: 'event',
                     attributes: {'k1': 'v1'});
}
记录一次事件的开始

记录事件的开始:

Future<void> fun()async{
   final bool state = await FlBaiduMobStat().eventStart(eventId: 'Event3');
}
记录一次事件的结束

记录事件的结束:

Future<void> fun()async{
   final bool state = await FlBaiduMobStat().eventEnd(
                       eventId: 'Event3',
                       attributes: {'k1': 'v1'});
}
记录某个页面访问的开始

记录页面访问的开始:

Future<void> fun()async{
   final bool state = await FlBaiduMobStat().pageStart('AnotherPage');
}
记录某个页面访问的结束

记录页面访问的结束:

Future<void> fun()async{
   final bool state = await FlBaiduMobStat().pageEnd('AnotherPage');
}

完整示例Demo

以下是一个完整的示例代码,展示了如何使用flutter_baidu_mob_stat插件:

import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_baidu_mob_stat/fl_baidu_mob_stat_ys.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化API Key
  final bool key = await FlBaiduMobStatYs()
      .setApiKey(androidKey: 'androidKey', iosKey: 'iosKey');
  debugPrint('初始化是否成功:$key');

  // 设置渠道名称
  String channelName = 'flutter';
  if (Platform.isAndroid) channelName += '- Android';
  if (Platform.isIOS) channelName += '- IOS';

  final bool channel = await FlBaiduMobStatYs().setAppChannel(channelName);
  debugPrint('设置channel:$channelName = $channel');

  // 设置版本号
  final bool version = await FlBaiduMobStatYs().setAppVersionName('1.0.0');
  debugPrint('设置version name:$version');

  // 开启调试模式
  final bool debug = await FlBaiduMobStatYs().setDebug(true);
  debugPrint('设置是否开启debug模式:$debug');

  runApp(MaterialApp(
    home: _MyApp(),
    debugShowCheckedModeBanner: false,
    title: 'FlBaiduMobStatYs',
  ));
}

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

class _MyAppState extends State<_MyApp> {
  bool _eventStartEndButtonSelected = false;
  String text = '';

  // 获取设备的cuId
  Future<void> _getDeviceCuId() async {
    final String? cuId = await FlBaiduMobStatYs().getDeviceCuId();
    if (cuId == null) return;
    text = 'CuId:\n' + cuId;
    setState(() {});
  }

  // 获取设备的测试ID
  Future<void> _getTestDeviceId() async {
    final String? id = await FlBaiduMobStatYs().getTestDeviceId();
    if (id == null) return;
    text = 'TestId\n' + id;
    setState(() {});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('FlBaiduMobStatYs Example')),
      body: Center(
        child: Column(children: <Widget>[
          Container(height: 100, child: Text(text), alignment: Alignment.center),
          ElevatedButton(
              child: const Text('logEvent'),
              onPressed: () async {
                final bool state = await FlBaiduMobStatYs().logEvent(
                    eventId: 'Event1',
                    attributes: {'k1': 'v1', 'k2': 'v2'});
                text = 'logEvent: $state';
                setState(() {});
              }),
          ElevatedButton(
              child: const Text('logDurationEvent'),
              onPressed: () async {
                final bool state = await FlBaiduMobStatYs().logDurationEvent(
                    eventId: 'Event2',
                    duration: 3000,
                    label: 'event',
                    attributes: {'k1': 'v1'});
                text = 'logDurationEvent: $state';
                setState(() {});
              }),
          ElevatedButton(
              child: Text(_eventStartEndButtonSelected ? 'eventEnd' : 'eventStart'),
              onPressed: () async {
                _eventStartEndButtonSelected = !_eventStartEndButtonSelected;
                if (_eventStartEndButtonSelected) {
                  final bool state = await FlBaiduMobStatYs().eventStart(eventId: 'Event3');
                  text = 'eventStart: $state';
                } else {
                  final bool state = await FlBaiduMobStatYs().eventEnd(
                      eventId: 'Event3',
                      attributes: {'k1': 'v1'});
                  text = 'eventEnd: $state';
                }
                setState(() {});
              }),
          ElevatedButton(
              child: const Text('open page'),
              onPressed: () async {
                final bool state = await FlBaiduMobStatYs().pageStart('AnotherPage');
                text = 'pageStart: $state';
                setState(() {});
              }),
          ElevatedButton(
              child: const Text('close page'),
              onPressed: () async {
                final bool state = await FlBaiduMobStatYs().pageEnd('AnotherPage');
                text = 'pageEnd: $state';
                setState(() {});
              }),
          ElevatedButton(
              child: const Text('getDeviceCuId'), onPressed: _getDeviceCuId),
          ElevatedButton(
              child: const Text('getTestDeviceId'),
              onPressed: _getTestDeviceId),
        ]),
      ),
    );
  }
}

更多关于Flutter百度移动统计插件flutter_baidu_mob_stat的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter百度移动统计插件flutter_baidu_mob_stat的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_baidu_mob_stat 是一个 Flutter 插件,用于集成百度移动统计(Baidu Mobile Statistics)到你的 Flutter 应用中。通过该插件,你可以方便地收集和分析应用的用户行为数据,帮助你更好地了解用户的使用习惯和优化应用。

以下是 flutter_baidu_mob_stat 插件的基本使用方法:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_baidu_mob_stat: ^latest_version

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

2. 配置百度移动统计

在百度移动统计平台上创建一个应用,并获取到 App KeyApp Secret

3. 初始化插件

在你的 Flutter 应用的 main.dart 文件中,初始化 flutter_baidu_mob_stat 插件:

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

void main() {
  // 初始化百度移动统计
  FlutterBaiduMobStat.init('your_app_key', 'your_app_secret');

  runApp(MyApp());
}

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

4. 事件统计

你可以使用 FlutterBaiduMobStat 提供的 API 来记录用户的行为事件。例如:

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

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Welcome to Flutter!',
            ),
            ElevatedButton(
              onPressed: () {
                // 记录一个自定义事件
                FlutterBaiduMobStat.logEvent('button_click', {'button_name': 'welcome_button'});
              },
              child: Text('Click Me'),
            ),
          ],
        ),
      ),
    );
  }
}

5. 页面统计

flutter_baidu_mob_stat 插件还支持自动页面统计。你可以在 MaterialAppnavigatorObservers 中添加 FlutterBaiduMobStatObserver,以便自动记录页面的访问情况:

void main() {
  // 初始化百度移动统计
  FlutterBaiduMobStat.init('your_app_key', 'your_app_secret');

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
      navigatorObservers: [FlutterBaiduMobStatObserver()],
    );
  }
}
回到顶部