Flutter插件rdc_flutter_sdk_2的介绍与使用

Flutter插件rdc_flutter_sdk_2的介绍与使用


RDC Flutter SDK

概述

Rabbit Mobile SDK 是一组用于移动设备的开发工具包。该 SDK 将被用于标记和收集来自 Rabbit 各业务单元的移动应用程序的在线数据。

SDK 将用于收集所有 Rabbit 客户在各个业务单位中的在线行为交易数据,并将其发展为数据分析和数据科学模型,最终将用于数据货币化。


流程图

流程图


功能特性

Rabbit 数据在线收集 SDK for Flutter 提供以下功能:

内联配置

我们将在应用程序启动时通过内联代码配置实现可覆盖的配置。

缓存

SDK 将使用缓存管理器作为其内存缓存来存储设备的静态数据,并使用 MongoDB Realm 来保存跟踪数据以备后用。

发送数据到 API 后端的触发条件

在发送到 API 后端之前会检查 CPU、内存和电池条件。所有条件通过后,SDK 将发送数据到 API 后端。


使用 SDK

前置条件

  • iOS 13.0 或更高版本。
  • Android 8.0 或更高版本。
  • Flutter 2 或更高版本。

平台支持

Android iOS
✔️ ✔️

插件安装

pubspec.yaml 文件中添加以下依赖项:

dependencies:
  rdc_flutter_sdk_2: ^0.0.4

设置

Dart 设置

确保使用以下插件:

import 'package:permission_handler/permission_handler.dart';

await Permission.location.request(); // Android 和 iOS
await Permission.appTrackingTransparency.request(); // 仅适用于 iOS

Android 设置

AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

build.gradle 文件中添加以下配置:

allprojects {
    repositories {
        google()
        mavenCentral()

        // 添加此行
        configurations.all {
            resolutionStrategy {
                force "com.google.android.gms:play-services-location:21.0.1"
            }
        }
    }
}

iOS 设置

Info.plist 文件中添加以下权限选项:

<!-- Location permissions -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要使用位置信息</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>始终和使用中都需要位置信息</string>
<key>NSLocationUsageDescription</key>
<string>旧设备需要位置信息</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>可以获取位置信息吗?</string>
<key>UIBackgroundModes</key>
<string>location</string>

<!-- App Tracking Transparency permissions -->
<key>NSUserTrackingUsageDescription</key>
<string>需要获取用户追踪权限</string>

Podfile 中添加以下内容:

## dart: PermissionGroup.appTrackingTransparency
'PERMISSION_APP_TRACKING_TRANSPARENCY=1',

## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
'PERMISSION_LOCATION=1',

配置

以下是可用的配置方法及其参数说明:

方法名称 参数 备注
setAPIKey String key 认证密钥
setEncryptionKey String key 数据加密密钥(仅支持 Hive)
setRotationTime int min = 1 循环发送数据到 API 的时间间隔
setDataCollectionType DataCollectionType type = rotation 数据发送方式:立即或循环
setRetentionDays int date = 30 清除已发送的数据的时间间隔
setDeleteAfterSent bool value = true 是否在发送后删除数据
setOfflineMode bool value = false 是否启用离线模式
setRetryOnFailed int time = 3 数据发送失败后的重试次数
setTriggerCondition int cpu = 0, int memory = 0, int batteryLevel = 0 数据发送的触发条件
setSessionExpire int min = 60 前台会话过期时间
setSessionAutoExpire int min = 30 后台会话自动过期时间
setConsent bool? value = null 用户同意状态
setPermissionMaid bool value = false 是否请求 Android 设备的权限
setStorageCondition required int min, required int max 存储条件:小于 min 不保存数据,min-max 范围内按 FIFO 保存数据

事件方法

以下是可用的事件方法及其参数说明:

方法名称 参数 备注
addEvent {required String eventName, required String eventValue, Map<dynamic, dynamic>? dataLayer} 添加事件日志到本地数据库
getEvents - 获取本地数据库中的事件列表
uploadEvent - 将本地数据库中的事件上传到 API
clearAll - 删除所有数据
clearCache - 删除已发送的数据
sessionStart - 开始 SDK 会话
sessionEnd - 结束 SDK 会话

自定义数据层

自定义数据层必须是扁平化的 JSON,且所有对象都必须为字符串类型:

addEvent(dataLayer: {
    'custom_field_1': 'custom_field_1',
    'custom_field_2': 'custom_field_2',
});

示例代码

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

import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:rdc_flutter_sdk_2/rabbit_data.dart';

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

  // 请求权限
  await Permission.location.request();
  await Permission.appTrackingTransparency.request();

  // 初始化配置
  var config = RabbitDataConfig(
    apiKey: 'GUawtArmlVOSlNbaTzwUMxBxlVqirqTc', // 必填
    debugMode: true, // 可选,默认 false
  );

  // 初始化 RabbitData 实例
  var rabbitData = await RabbitData.initializeInstance(config);

  // 添加事件
  await rabbitData.addEvent('init_app', 'init_app');

  // 启动应用
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      home: SplashScreen(), // 替换为你的启动页面
    );
  }
}

运行示例应用

  1. 克隆仓库:

    git clone https://bitbucket.org/bssh-rabbit/rdc-flutter-sdk/src/master/example
  2. 在 VSCode 或 Android Studio 中打开项目文件夹。

  3. 在终端中运行以下命令:

    flutter run
1 回复

更多关于Flutter插件rdc_flutter_sdk_2的介绍与使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在使用一个未知功能的Flutter插件(如 rdc_flutter_sdk_2)时,由于缺乏官方文档或明确的功能描述,我们需要通过一些方法来探索和理解其功能。以下是一些步骤和建议,帮助你更好地使用这个插件:

1. 查看插件的源代码

  • 如果插件是开源的,你可以直接查看其源代码,了解其实现的功能。
  • pubspec.yaml 中指定插件的版本后,可以在 ~/.pub-cache/hosted/pub.dartlang.org/ 目录下找到插件的源代码。

2. 查看插件的 pubspec.yaml 文件

  • 插件的 pubspec.yaml 文件通常包含一些基本信息,如插件的名称、版本、依赖项等。通过查看这些信息,你可以初步了解插件的用途。

3. 查看插件的 README.md 文件

  • 如果插件有 README.md 文件,通常会包含插件的使用说明、功能描述、示例代码等。即使插件的功能描述为 undefinedREADME.md 文件仍可能提供一些有用的信息。

4. 查看插件的 example 目录

  • 许多 Flutter 插件会附带一个 example 目录,其中包含示例代码。通过运行示例代码,你可以直观地了解插件的功能。

5. 查看插件的 API 文档

  • 如果插件有生成 API 文档,你可以通过查看文档来了解其提供的类、方法和属性。通常可以通过 dartdoc 工具生成 API 文档。

6. 尝试使用插件

  • 如果以上方法都无法提供足够的信息,你可以尝试在项目中导入插件,并调用其提供的方法,观察其行为。
  • 例如:
    import 'package:rdc_flutter_sdk_2/rdc_flutter_sdk_2.dart';
    
    void main() {
      // 尝试调用插件的方法
      RdcFlutterSdk2.initialize();
      // 观察插件的输出或行为
    }

7. 查看插件的依赖项

  • 插件的依赖项可能会提供一些线索,帮助你理解其功能。例如,如果插件依赖了某个网络库,可能说明它与网络请求相关。

8. 搜索插件的名称

  • 在搜索引擎或 GitHub 上搜索插件的名称,可能会找到相关的讨论、问题或使用示例。

9. 联系插件的作者

  • 如果插件是开源的,你可以尝试联系插件的作者,询问其功能和使用方法。

10. 使用调试工具

  • 使用 Flutter 的调试工具(如 flutter logs)来观察插件的输出和日志,可能会帮助你理解其功能。

示例代码

假设你已经将 rdc_flutter_sdk_2 添加到 pubspec.yaml 文件中,你可以尝试以下代码:

dependencies:
  flutter:
    sdk: flutter
  rdc_flutter_sdk_2: ^1.0.0  # 假设版本为1.0.0
import 'package:flutter/material.dart';
import 'package:rdc_flutter_sdk_2/rdc_flutter_sdk_2.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('RDC Flutter SDK 2 Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              // 尝试调用插件的方法
              RdcFlutterSdk2.initialize();
              // 观察插件的输出或行为
            },
            child: Text('Initialize SDK'),
          ),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!