Flutter数据处理与分析插件finbox_dc_plugin的使用

Flutter数据处理与分析插件finbox_dc_plugin的使用

该插件可以用于将移动应用集成到DeviceConnect中,以便用户可以共享他们的数据。

注意事项

在集成过程中,FinBox团队将会提供以下信息:

  • ACCESS_KEY
  • SECRET_KEY
  • DC_SDK_VERSION
  • DC_FLAVOR
  • COMMON_SDK_VERSION
  • COMMON_FLAVOR
  • LOGGER_SDK_VERSION
  • CLIENT_API_KEY

添加插件

local.properties文件中指定以下内容:

ACCESS_KEY=<ACCESS_KEY>
SECRET_KEY=<SECRET_KEY>
DC_SDK_VERSION=<DC_SDK_VERSION>
DC_FLAVOR=<DC_FLAVOR>
COMMON_SDK_VERSION=<COMMON_SDK_VERSION>
COMMON_FLAVOR=<COMMON_FLAVOR>
LOGGER_SDK_VERSION=<LOGGER_SDK_VERSION>

pubspec.yaml文件中添加插件依赖:

dependencies:
  finbox_dc_plugin: any

创建用户

调用FinBoxDcPlugin.createUser(CLIENT_API_KEY, CUSTOMER_ID)方法以共享用户数据。

FinBoxDcPlugin.createUser("CLIENT_API_KEY", "CUSTOMER_ID").fold(
  (right) => {
    // 认证成功
    print("Access Token: $right")
  },
  (left) => {
    // 认证失败
    print("Error Code $left")
  }
);

您可以阅读错误代码部分了解有关错误的信息。

开始周期性同步

此方法仅在createUser方法回调成功后调用。调用此方法后,将根据权限配置开始为所有数据源进行同步。以下方法将在后台定期同步数据。

FinBoxDcPlugin.startPeriodicSync();

错误代码

以下是常量名称、错误代码值及其描述的表格:

常量名称 常量值 描述
QUOTA_LIMIT_EXCEEDED 7670 API密钥超出其配额限制
AUTHENTICATE_FAILED 7671 API密钥和用户的认证失败
AUTHENTICATE_API_FAILED 7672 API密钥的认证失败
AUTHORIZATION_API_FAILED 7673 API密钥的授权失败
AUTHENTICATE_API_EMPTY 7676 API密钥为空
AUTHENTICATE_USER_EMPTY 7677 用户名为空
NO_ACTIVE_NETWORK 7678 设备未连接到活动网络
NETWORK_TIME_OUT 7679 请求超时
NETWORK_RESPONSE_NULL 7681 网络响应为空
USER_TOKENS_NULL 7682 访问令牌和刷新令牌都为空
ACCESS_TOKEN_NULL 7683 访问令牌为空
REFRESH_TOKEN_NULL 7684 刷新令牌为空
AUTHENTICATE_NOT_FOUND 7685 未找到端点

某些错误代码可以通过验证实现或重试创建用户来解决,而其他错误代码只能通过联系FinBox来解决。

完整示例Demo

以下是一个完整的示例Demo,展示了如何使用finbox_dc_plugin插件。

import 'package:either_dart/either.dart';
import 'package:finbox_dc_plugin/finbox_dc_plugin.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'constants.dart';
import 'common.dart';

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

/// 应用程序的根小部件。
///
/// 这个小部件是Flutter应用程序的起点,负责初始化应用程序的状态并构建主用户界面。它扩展了[StatefulWidget]以管理其内部状态。
///
class MyApp extends StatefulWidget {
  /// 创建应用程序的根小部件。
  ///
  /// [key]参数是可选的,可用于控制小部件在小部件树中的身份。
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final Future<FirebaseApp> _initialization = Firebase.initializeApp();
  late FirebaseMessaging _messaging;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return FutureBuilder(
        future: _initialization,
        builder: (context, snapshot) {
          // 检查是否有错误
          if (snapshot.hasError) {
            // return SomethingWentWrong();
            print('Something went wrong in Flutter Fire');
          }

          if (snapshot.connectionState == ConnectionState.done) {
            print('firebase INIT');
            _messaging = FirebaseMessaging.instance;
            _messaging.getToken().then((value) => print("Fcm token: $value"));
            FirebaseMessaging.onMessage.listen((RemoteMessage event) {
              print("Message Received: ${event.data}");
              FinBoxDcPlugin.forwardFinBoxNotificationToSDK(event.data);
            });
            return MaterialApp(
              title: 'Flutter Demo',
              theme: ThemeData(
                primarySwatch: Colors.blue,
              ),
              home: HomePage(),
            );
          }

          return Container(
            color: Colors.white,
          );
        });
  }
}

/// 应用程序的主要屏幕。
///
/// 此小部件显示一个按钮列表,允许用户与FinBox Device Connect SDK交互。它扩展了[StatelessWidget]因为它不管理任何内部状态。
///
/// [HomePage]小部件提供了执行以下操作的按钮:
///   - 创建用户
///   - 设置设备匹配数据
///   - 设置同步频率
///   - 启动和停止周期性同步
///   - 同步单个数据点
///   - 重置数据
///   - 忘记用户
///
/// 每个按钮触发相应的方法,通过`FinBoxDcPlugin`与FinBox Device Connect SDK交互。
///
class HomePage extends StatelessWidget {

  /// 使用FinBox Device Connect SDK创建新用户。
  ///
  /// 此方法调用`createUser`方法,并将结果打印到控制台。
  void _createUser() {
    try {
      final hello = FinBoxDcPlugin.createUser(
          Constants.CLIENT_API_KEY, CommonUitl.getUsername());
      hello.fold(
          (left) => {
                // 错误响应
                print("Error: $left")
              },
          (right) => {
                // 成功响应
                print("Access Token: $right")
              });
    } on PlatformException catch (e) {
      print('Failed to fetch data: ${e.message}');
    }
  }

  /// 使用FinBox Device Connect SDK启动周期性数据同步。
  ///
  /// 此方法调用`startPeriodicSync`方法。
  void _startPeriodicSync() {
    FinBoxDcPlugin.startPeriodicSync();
  }

  /// 使用FinBox Device Connect SDK停止周期性数据同步。
  ///
  /// 此方法调用`stopPeriodicSync`方法。
  void _stopPeriodicSync() {
    FinBoxDcPlugin.stopPeriodicSync();
  }

  /// 使用FinBox Device Connect SDK同步短信数据。
  ///
  /// 此方法调用`syncSmsData`方法。
  void _syncSmsData() {
    FinBoxDcPlugin.syncSmsData();
  }

  /// 使用FinBox Device Connect SDK同步位置数据。
  ///
  /// 此方法调用`syncLocationData`方法。
  void _syncLocationData() {
    FinBoxDcPlugin.syncLocationData();
  }

  /// 使用FinBox Device Connect SDK同步设备数据。
  ///
  /// 此方法调用`syncDeviceData`方法。
  void _syncDeviceData() {
    FinBoxDcPlugin.syncDeviceData();
  }

  /// 使用FinBox Device Connect SDK同步已安装的应用列表。
  ///
  /// 此方法调用`syncAppsListData`方法。
  void _syncAppsListData() {
    FinBoxDcPlugin.syncAppsListData();
  }

  /// 使用FinBox Device Connect SDK设置数据同步频率。
  ///
  /// 此方法调用`setSyncFrequency`方法。
  void _setSyncFrequency() {
    FinBoxDcPlugin.setSyncFrequency(36000);
  }

  /// 使用FinBox Device Connect SDK重置所有用户数据。
  ///
  /// 此方法调用`resetData`方法。
  void _resetData() {
    FinBoxDcPlugin.resetData();
  }

  /// 使用FinBox Device Connect SDK忘记当前用户。
  ///
  /// 此方法调用`forgetUser`方法。
  void _forgetUser() {
    FinBoxDcPlugin.forgetUser();
  }

  /// 使用FinBox Device Connect SDK设置设备匹配数据。
  ///
  /// 此方法调用`setDeviceMatch`方法。
  void _setDeviceMatch() {
    FinBoxDcPlugin.setDeviceMatch("email", "userName", "phone");
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Device Connect Sample"),
      ),
      body: Center(
        child: Column(
          children: [
            ElevatedButton(
              onPressed: _createUser,
              child: Text("创建用户"),
            ),
            ElevatedButton(
              onPressed: _setDeviceMatch,
              child: Text("设置设备数据"),
            ),
            ElevatedButton(
              onPressed: _setSyncFrequency,
              child: Text("设置同步频率"),
            ),
            ElevatedButton(
              onPressed: _startPeriodicSync,
              child: Text("启动周期性同步"),
            ),
            ElevatedButton(
              onPressed: _stopPeriodicSync,
              child: Text("停止周期性同步"),
            ),
            ElevatedButton(
              onPressed: _resetData,
              child: Text("重置数据"),
            ),
            ElevatedButton(
              onPressed: _forgetUser,
              child: Text("忘记用户"),
            ),
            ElevatedButton(
              onPressed: _syncSmsData,
              child: Text("同步短信数据"),
            ),
            ElevatedButton(
              onPressed: _syncLocationData,
              child: Text("同步位置数据"),
            ),
            ElevatedButton(
              onPressed: _syncAppsListData,
              child: Text("同步应用数据"),
            ),
            ElevatedButton(
              onPressed: _syncDeviceData,
              child: Text("同步设备数据"),
            ),
          ],
        ),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

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

1 回复

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


finbox_dc_plugin 是 Flutter 中用于数据处理与分析的插件,通常用于金融、投资、数据分析等场景。以下是如何使用 finbox_dc_plugin 的基本步骤和示例代码。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  finbox_dc_plugin: ^1.0.0  # 请根据实际版本号填写

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

2. 初始化插件

在你的 Flutter 项目中,首先需要初始化 finbox_dc_plugin。通常,你可以在 main.dart 文件中进行初始化。

import 'package:finbox_dc_plugin/finbox_dc_plugin.dart';

void main() {
  FinboxDCPlugin.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的API密钥
    environment: Environment.production,  // 或 Environment.sandbox
  );

  runApp(MyApp());
}

3. 使用插件进行数据处理

finbox_dc_plugin 提供了多种方法来进行数据处理和分析。以下是一些常见的用法示例:

3.1 获取数据

你可以使用 fetchData 方法来获取特定数据集的数据。

Future<void> fetchData() async {
  try {
    var data = await FinboxDCPlugin.fetchData(
      datasetId: 'your_dataset_id',  // 替换为你的数据集ID
      parameters: {'param1': 'value1', 'param2': 'value2'},
    );
    print('Fetched Data: $data');
  } catch (e) {
    print('Error fetching data: $e');
  }
}

3.2 提交数据

你可以使用 submitData 方法将数据提交到指定的数据集。

Future<void> submitData() async {
  try {
    await FinboxDCPlugin.submitData(
      datasetId: 'your_dataset_id',  // 替换为你的数据集ID
      data: {'key1': 'value1', 'key2': 'value2'},
    );
    print('Data submitted successfully');
  } catch (e) {
    print('Error submitting data: $e');
  }
}

3.3 分析数据

你可以使用 analyzeData 方法来对数据进行分析。

Future<void> analyzeData() async {
  try {
    var analysisResult = await FinboxDCPlugin.analyzeData(
      datasetId: 'your_dataset_id',  // 替换为你的数据集ID
      analysisType: AnalysisType.statistics,
    );
    print('Analysis Result: $analysisResult');
  } catch (e) {
    print('Error analyzing data: $e');
  }
}

4. 处理响应

finbox_dc_plugin 的方法通常会返回一个 Future,你可以使用 async/await 来处理这些异步操作,并根据返回的数据进行相应的处理。

5. 错误处理

在使用插件时,务必进行错误处理,以确保在出现问题时能够及时发现并处理异常。

6. 其他功能

finbox_dc_plugin 可能还提供了其他功能,如数据转换、数据可视化等。你可以参考插件的官方文档以获取更多详细信息和高级用法。

7. 示例代码

以下是一个完整的示例代码,展示了如何初始化插件并获取数据:

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

void main() {
  FinboxDCPlugin.initialize(
    apiKey: 'YOUR_API_KEY',
    environment: Environment.production,
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Finbox DC Plugin Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: fetchData,
            child: Text('Fetch Data'),
          ),
        ),
      ),
    );
  }

  Future<void> fetchData() async {
    try {
      var data = await FinboxDCPlugin.fetchData(
        datasetId: 'your_dataset_id',
        parameters: {'param1': 'value1', 'param2': 'value2'},
      );
      print('Fetched Data: $data');
    } catch (e) {
      print('Error fetching data: $e');
    }
  }
}
回到顶部