Flutter数据分析插件janalytics的使用

Flutter数据分析插件janalytics的使用

安装

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

dependencies:
  janalytics: 2.1.5

配置

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", // 暂时填写默认值即可.
    ]
  }    
}

使用

首先引入插件:

import 'package:janalytics/janalytics.dart';

示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 janalytics 插件。

import 'package:flutter/material.dart';
import 'dart:async';
import "package:package_info/package_info.dart";
import 'viewpage.dart';
import 'demo_utils.dart';
import 'package:janalytics/janalytics.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) {
    // TODO: implement build
    return MaterialApp(
      home: HomeActivity(),
    );
  }
}

class HomeActivity extends StatefulWidget {
  [@override](/user/override)
  State<StatefulWidget> createState() {
    // TODO: implement 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() {
    // TODO: implement 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 {
    janalytics.setup(appKey: "e58a32cb3e4469ebf31867e5", channel: "devloper-default"); // 初始化 SDK
    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) {
    // TODO: implement didChangeAppLifecycleState
    super.didChangeAppLifecycleState(state);
    print("page fragemnt 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 new Container(
            padding: EdgeInsets.all(20),
            child: new Column(
              children: <Widget>[
                new Container(
                  width: double.infinity,
                  margin: EdgeInsets.all(20),
                  child: new Text(
                    "$debugLabel\n ",
                    textAlign: TextAlign.left,
                    style: TextStyle(color: Colors.grey, fontSize: 16),
                  ),
                  alignment: Alignment.centerLeft,
                ),
                DemoUtils.createButton("统计示例(ViewPage)", () {
                  Navigator.push(context, new MaterialPageRoute(builder: (ctx) {
                    return new ViewPageScreen();
                  }));
                }),
                DemoUtils.createButton("统计示例(Show/Hide)", () {
                  Navigator.push(context, new MaterialPageRoute(builder: (ctx) {
                    return new ShowHidePage();
                  }));
                }),
                DemoUtils.createButton("统计示例(Replace)", () {
                  Navigator.push(context, new MaterialPageRoute(builder: (ctx) {
                    return new ReplacePage();
                  }));
                }),
                DemoUtils.createButton("统计示例(账号)", () {
                  Navigator.push(context, new MaterialPageRoute(builder: (ctx) {
                    return new AccountPage();
                  }));
                }),
              ],
            ),
          );
        }),
        backgroundColor: Color(0xff303030),
      ),
    );
  }
}

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

1 回复

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


janalytics 是极光推送(JPush)提供的一个用于数据统计和分析的 Flutter 插件。它可以帮助开发者收集和分析应用的用户行为数据,从而更好地优化产品和运营策略。

1. 安装 janalytics 插件

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

dependencies:
  janalytics: ^latest_version

然后运行 flutter pub get 来安装插件。

2. 初始化 janalytics

在使用 janalytics 之前,你需要在应用启动时进行初始化。通常在 main.dart 文件中进行初始化:

import 'package:janalytics/janalytics.dart';

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

  // 初始化 janalytics
  await Janalytics().setup(
    appKey: 'your_app_key', // 替换为你的极光 AppKey
    channel: 'your_channel', // 替换为你的渠道名称
  );

  runApp(MyApp());
}

3. 配置 Android 和 iOS

Android

android/app/build.gradle 文件中,确保你启用了 multidex 并添加了极光推送的依赖:

android {
    defaultConfig {
        multiDexEnabled true
    }
}

dependencies {
    implementation 'cn.jiguang.sdk:janalytics:latest_version'
    implementation 'cn.jiguang.sdk:jcore:latest_version'
}

AndroidManifest.xml 中添加必要的权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

iOS

ios/Runner/Info.plist 文件中,添加以下配置:

<key>JAnalytics</key>
<dict>
    <key>Channel</key>
    <string>your_channel</string>
    <key>AppKey</key>
    <string>your_app_key</string>
</dict>

4. 使用 janalytics 进行数据统计

janalytics 提供了多种方法来统计用户行为数据,包括页面浏览、事件统计、用户登录等。

页面浏览统计

Janalytics().onPageStart('page_name'); // 开始页面统计
Janalytics().onPageEnd('page_name'); // 结束页面统计

事件统计

Janalytics().logEvent({
  'eventId': 'event_id',
  'parameters': {'key1': 'value1', 'key2': 'value2'},
});

用户登录统计

Janalytics().identifyAccount({
  'userId': 'user_id',
  'parameters': {'key1': 'value1', 'key2': 'value2'},
});

用户注册统计

Janalytics().registerAccount({
  'userId': 'user_id',
  'parameters': {'key1': 'value1', 'key2': 'value2'},
});

用户信息更新

Janalytics().updateAccount({
  'userId': 'user_id',
  'parameters': {'key1': 'value1', 'key2': 'value2'},
});

用户登出统计

Janalytics().logoutAccount();
回到顶部