Flutter数据分析与监控插件janalyticsplub的使用

Flutter数据分析与监控插件janalyticsplub的使用

安装

在工程 pubspec.yaml 文件中加入依赖项:

dependencies:
  janalyticsplub: 2.1.9

或者如果你更倾向于从 GitHub 获取最新版本:

dependencies:
  flutter_plugin_engagelab:
    git:
      url: git://github.com/jpush/janalytics-flutter-plugin.git
      ref: master

配置

Android:

android/app/build.gradle 文件中添加以下代码:

android {
  ...
  defaultConfig {
    applicationId "替换成自己应用 ID"
    ...
    ndk {
      // 选择要添加的对应 CPU 类型的 .so 库。
      abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a'
    }

    manifestPlaceholders = [
      JPUSH_PKGNAME : applicationId,
      JPUSH_APPKEY : "appkey", // NOTE: JPush 上注册的包名对应的 Appkey.
      JPUSH_CHANNEL : "developer-default", // 暂时填写默认值即可.
    ]
  }
}

使用

首先在你的 Dart 文件中导入插件:

import 'package:janalyticsplub/janalyticsplub.dart';

示例代码

以下是一个完整的示例,展示了如何在 Flutter 应用中使用 janalyticsplub 插件进行数据分析与监控。

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:package_info/package_info.dart';
import 'viewpage.dart';
import 'demo_utils.dart';
import 'package:janalyticsplub/janalyticsplub.dart';
import 'show_hide_page.dart';
import 'replace_page.dart';
import 'account_page.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeActivity(),
    );
  }
}

class HomeActivity extends StatefulWidget {
  [@override](/user/override)
  State<StatefulWidget> createState() {
    return HomeActivityState();
  }
}

class HomeActivityState extends State<HomeActivity> with WidgetsBindingObserver {
  String debugLabel = 'Unknown';
  final Janalytics janalytics = new Janalytics();

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  [@override](/user/override)
  void dispose() {
    super.dispose();
    // 页面统计事件,在需要统计页面的 dispose 方法里调用 onPageEnd
    janalytics.onPageEnd(widget.runtimeType.toString());
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    // 初始化 SDK
    janalytics.setup(
      appKey: "e58a32cb3e4469ebf31867e5",
      channel: "devloper-default"
    );
    janalytics.setDebugMode(true); // 打开调试模式

    // 如果小部件从树中被移除且异步平台消息正在飞行,则我们希望丢弃回复而不是调用 setState 更新我们的非存在外观。
    if (!mounted) return;

    // 页面统计事件,在 initState 方法中调用 onPageStart
    janalytics.onPageStart(widget.runtimeType.toString());

    try {
      PackageInfo info = await PackageInfo.fromPlatform();
      String appInfo = '应用名: ${info.appName}\n包名:${info.packageName}\n版本:${info.version}';
      setState(() {
        debugLabel = appInfo;
      });
    } on Exception catch (e) {
      print('init error:$e');
    }
  }

  [@override](/user/override)
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
    print("page fragment didChangeAppLifecycleState");
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
          backgroundColor: Color(0xff212121),
        ),
        body: Builder(builder: (BuildContext context) {
          return Container(
            padding: EdgeInsets.all(20),
            child: Column(
              children: <Widget>[
                Container(
                  width: double.infinity,
                  margin: EdgeInsets.all(20),
                  child: Text(
                    "$debugLabel\n",
                    textAlign: TextAlign.left,
                    style: TextStyle(color: Colors.grey, fontSize: 16),
                  ),
                  alignment: Alignment.centerLeft,
                ),
                DemoUtils.createButton("统计示例(ViewPage)", () {
                  Navigator.push(context, MaterialPageRoute(builder: (ctx) {
                    return ViewPageScreen();
                  }));
                }),
                DemoUtils.createButton("统计示例(Show/Hide)", () {
                  Navigator.push(context, MaterialPageRoute(builder: (ctx) {
                    return ShowHidePage();
                  }));
                }),
                DemoUtils.createButton("统计示例(Replace)", () {
                  Navigator.push(context, MaterialPageRoute(builder: (ctx) {
                    return ReplacePage();
                  }));
                }),
                DemoUtils.createButton("统计示例(账号)", () {
                  Navigator.push(context, MaterialPageRoute(builder: (ctx) {
                    return AccountPage();
                  }));
                }),
              ],
            ),
          );
        }),
        backgroundColor: Color(0xff303030),
      ),
    );
  }
}

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

1 回复

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


janalyticsplugin 是 Flutter 中用于集成 极光分析(JAnalytics) 的插件。极光分析是极光推送(JPush)提供的一个数据分析工具,用于帮助开发者收集和分析用户行为数据,从而优化产品体验。

以下是如何在 Flutter 项目中使用 janalyticsplugin 的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 janalyticsplugin 依赖:

dependencies:
  flutter:
    sdk: flutter
  janalyticsplugin: ^latest_version

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

2. 配置 Android

android/app/build.gradle 文件中,确保已经配置了极光推送的 AppKey 和其他必要设置:

android {
    ...
    defaultConfig {
        ...
        manifestPlaceholders = [
            JPUSH_APPKEY: "your_jpush_appkey", // 极光推送的 AppKey
            JPUSH_CHANNEL: "developer-default" // 渠道名称
        ]
    }
}

3. 配置 iOS

ios/Runner/Info.plist 文件中,添加极光推送的 AppKey:

<key>JPUSH_APPKEY</key>
<string>your_jpush_appkey</string>
<key>JPUSH_CHANNEL</key>
<string>developer-default</string>

4. 初始化插件

main.dart 中初始化 janalyticsplugin

import 'package:janalyticsplugin/janalyticsplugin.dart';

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

  // 初始化极光分析
  await Janalyticsplugin.setup(
    appKey: 'your_jpush_appkey',
    channel: 'developer-default',
  );

  runApp(MyApp());
}

5. 使用插件

5.1 记录事件

你可以使用 Janalyticsplugin 来记录各种用户事件,例如页面浏览、自定义事件等。

// 记录页面浏览事件
Janalyticsplugin.onPageStart('HomePage');

// 记录页面结束事件
Janalyticsplugin.onPageEnd('HomePage');

// 记录自定义事件
Janalyticsplugin.onEvent({
  'eventId': 'button_click',
  'parameters': {'button_name': 'submit'},
});

5.2 用户属性

你可以设置用户属性,例如用户 ID、性别、年龄等。

// 设置用户ID
Janalyticsplugin.setUserId('123456');

// 设置用户属性
Janalyticsplugin.setUserProfile({
  'gender': 'male',
  'age': 25,
});

5.3 崩溃日志

极光分析还支持自动捕获崩溃日志。

// 启用崩溃日志捕获
Janalyticsplugin.crashLogON();
回到顶部