Flutter流量感知与控制插件flowsense_flutter_plugin的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter流量感知与控制插件flowsense_flutter_plugin的使用

安装Flowsense SDK非常简单。请仔细遵循以下步骤,并开始享受更精确的应用程序互动。

重要事项

Flowsense是一个需要一组认证令牌才能工作的服务。在尝试安装插件之前,请联系销售团队。

要求

  • Android版本16或更高。
  • 兼容以下依赖版本:
api 'com.google.code.gson:gson:2.8.2'
api 'io.sentry:sentry-android:1.7.2'
api 'com.google.android.gms:play-services-location:16.0.0'
api 'com.google.firebase:firebase-core:16.0.9'
api 'com.google.firebase:firebase-messaging:17.6.0'
api 'com.amazonaws:*:2.11.0'

启动插件

Flowsense为每个平台提供一个令牌。启动插件时传递特定平台的令牌:

if (Platform.isIOS) {
    FlowsenseFlutterPlugin.shared.startFlowsenseService("your_ios_token");
} else {
    FlowsenseFlutterPlugin.shared.startFlowsenseService("your_android_token");
}

地理位置

如果使用地理位置功能,请在运行时包含位置授权请求:

// 请求权限
FlowsenseFlutterPlugin.shared.requestAlwaysAuthorization();

// 开始位置跟踪
FlowsenseFlutterPlugin.shared.startMonitoringLocation();

在iOS上,您必须在Info.plist文件中包含三个键以显示位置权限消息:

  1. Privacy - Location Always and When In Use Usage Description
  2. Privacy - Location Always Usage Description
  3. Privacy - Location When In Use Usage Description

每个键都必须包含您希望向用户展示的消息。

用户标识符

可以通过以下方式传递匿名化用户标识符给Flowsense:

FlowsenseFlutterPlugin.shared.updatePartnerUserId("your_anonimized_user_info");

丰富用户数据

可以通过传递一组键值对来丰富用户信息:

FlowsenseFlutterPlugin.shared.setKeyValue({"Last Purchase ID": "AIFTS-DF86F"});
FlowsenseFlutterPlugin.shared.setKeyValue({"Last Purchase Value": 63});
FlowsenseFlutterPlugin.shared.setKeyValue({"Registered User": false});
FlowsenseFlutterPlugin.shared.setKeyValue({"Last Purchase Date": new DateTime.now()});
FlowsenseFlutterPlugin.shared.commitChanges();

应用内分析

可以跟踪特定的应用事件,通过传递事件名称和可选的数据集:

FlowsenseFlutterPlugin.shared.inAppEvent("eventName", {
    "buttonClicked": "OK",
    "dateClicked": new DateTime.now()
});

推送通知

有关Flowsense推送的更多信息,请参阅以下链接:

iOS

Flowsense iOS SDK默认使用方法交换。您可以通过在app的Info.plist文件中添加以下键来禁用它:FlowsenseCallbackSwizzlingEnabled,其布尔值为NO

注意:这样做后,Flowsense将无法收集推送分析。

在iOS上,需要在运行时请求推送权限。通过请求令牌实现:

FlowsenseFlutterPlugin.shared.requestPushToken();

可以定义回调以检索iOS令牌并查看推送权限状态:

FlowsenseFlutterPlugin.shared.setPushTokenCallback((token){
    // 处理token
});

FlowsenseFlutterPlugin.shared.setPushPermissionCallback((permission){
    // 处理权限
});

两个平台

可以在接收到通知和/或点击通知时定义回调:

FlowsenseFlutterPlugin.shared.setPushReceivedCallback((notification){
    // 处理接收到的通知
});

FlowsenseFlutterPlugin.shared.setPushClickedCallback((notification){
    // 处理点击的通知
});

完整示例代码

以下是完整的示例代码:

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

import 'package:flutter/services.dart';
import 'package:flowsense_flutter_plugin/flowsense_flutter_plugin.dart';

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

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

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';

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

  // 平台消息是异步的,所以我们初始化在一个异步方法中。
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能失败,所以我们使用try/catch来捕获PlatformException。
    try {
      platformVersion = await FlowsenseFlutterPlugin.platformVersion;
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }

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

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Text('运行在: $_platformVersion\n'),
        ),
      ),
    );
  }
}

更多关于Flutter流量感知与控制插件flowsense_flutter_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter流量感知与控制插件flowsense_flutter_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用flowsense_flutter_plugin插件进行流量感知与控制的代码示例。这个插件假设它提供了流量监控和控制功能,但请注意,具体的API和方法可能会根据插件的更新而变化。以下示例假设你已经将flowsense_flutter_plugin添加到了你的pubspec.yaml文件中。

1. 添加依赖

首先,确保在pubspec.yaml文件中添加了flowsense_flutter_plugin依赖:

dependencies:
  flutter:
    sdk: flutter
  flowsense_flutter_plugin: ^latest_version  # 替换为最新版本号

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

2. 导入插件

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

import 'package:flowsense_flutter_plugin/flowsense_flutter_plugin.dart';

3. 初始化插件并设置监听器

在你的应用初始化时(例如在MainActivity.ktAppDelegate.swift中,如果插件需要原生初始化,以及在你的Flutter入口文件中,如main.dart),初始化插件并设置流量变化的监听器:

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化FlowSense插件
  FlowSenseFlutterPlugin flowSense = FlowSenseFlutterPlugin();

  // 设置流量变化监听器
  flowSense.addListener(() {
    // 假设有一个回调提供流量使用情况
    var flowData = flowSense.getCurrentFlowData();
    print('Current Flow Data: $flowData');
  });

  // 开始监控流量(假设插件提供了此方法)
  flowSense.startMonitoring();

  runApp(MyApp());
}

4. 获取和处理流量数据

假设插件提供了获取当前流量数据的方法,你可以像这样使用它:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('FlowSense Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('Current Flow Usage:'),
              FutureBuilder<Map<String, dynamic>>(
                future: FlowSenseFlutterPlugin().getCurrentFlowData(),
                builder: (context, snapshot) {
                  if (snapshot.connectionState == ConnectionState.done) {
                    if (snapshot.hasError) {
                      return Text('Error: ${snapshot.error}');
                    } else {
                      var flowData = snapshot.data;
                      return Text('Downloaded: ${flowData['downloaded']} MB, Uploaded: ${flowData['uploaded']} MB');
                    }
                  } else {
                    return CircularProgressIndicator();
                  }
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

5. 控制流量(假设提供控制方法)

如果插件提供了控制流量的方法(如限制下载/上传速度),你可以像这样使用:

void _limitDownloadSpeed(int kbps) {
  FlowSenseFlutterPlugin().setDownloadSpeedLimit(kbps);
}

void _limitUploadSpeed(int kbps) {
  FlowSenseFlutterPlugin().setUploadSpeedLimit(kbps);
}

然后在UI中调用这些方法,例如通过按钮点击事件。

注意

  • 上述代码中的方法和属性(如getCurrentFlowData, startMonitoring, setDownloadSpeedLimit, setUploadSpeedLimit)是假设存在的,实际使用时需要根据flowsense_flutter_plugin的文档进行调整。
  • 流量控制和感知通常需要系统级权限,确保你的应用已经请求并获得了必要的权限。
  • 由于流量监控通常涉及到底层网络操作,插件可能需要在原生代码中进行一些设置,请查阅插件的官方文档以获取更多信息。

希望这个示例能帮助你开始在Flutter项目中使用flowsense_flutter_plugin插件!

回到顶部