Flutter功能插件flyreel_sdk_flutter的使用

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

Flutter功能插件flyreel_sdk_flutter的使用

Flyreel Flutter SDK

平台 平台 Languages GitHub release

要求

Android

  • Android 6+ (minSdk 23)
  • compileSdkVersion 34

iOS

  • iOS 13+

安装

使用flutter安装

$ flutter pub add flyreel_sdk_flutter

路径依赖

通过ssh:

flyreel_sdk_flutter:
  git:
    url: git@github.com:Flyreel/flyreel-sdk-flutter.git

或者通过https:

flyreel_sdk_flutter:
  git:
    url: https://github.com/Flyreel/flyreel-sdk-flutter.git

使用

iOS权限设置

由于SDK积极使用iOS系统的某些功能,因此您需要在Info.plist文件中提供一些权限设置。

<dict>
    // ...
    <key>NSCameraUsageDescription</key>
    <string>我们需要访问摄像头。</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>我们需要访问麦克风。</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>我们需要访问您的位置数据。</string>
</dict>

初始化

要使用Flyreel SDK,您必须提供一个包含以下参数的配置对象:

  • settingsVersion: 远程SDK设置的标识符。
  • organizationId: 组织的标识符。

在lib/main.dart文件中,使用提供的对象初始化Flyreel:

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

  // 初始化Flyreel,传入organizationId和settingsVersion
  var config = FlyreelConfig(
    organizationId: "5d3633f9103a930011996475",
    settingsVersion: 1,
  );
  await Flyreel.initialize(config);

  runApp(const MyApp());
}

如何打开Flyreel聊天

调用openFlyreel()

void openFlyreel() async {
  await Flyreel.open();
}

深度链接

如果您是从深度链接、推送通知或自定义解决方案启动Flyreel流程,并且可以自动提供用户详细信息,请使用以下方法:

void openFlyreelWithCredentials() async {
  await Flyreel.openWithCredentials(
    zipCode: "80212",
    accessCode: "6M4T0T",
  );
}

void openFlyreelWithUrl() async {
  await Flyreel.open(
      deeplinkUrl: "https://your.custom.url/?flyreelAccessCode=6M4T0T&flyreelZipCode=80212");
}

自定义字体

如果您想为Flyreel聊天使用自定义字体,您需要为iOS和Android平台提供ttf文件。

  • 在Android目录中,您可以将ttf文件放在main/assets或main/res/font文件夹中。
  • 对于iOS,您需要遵循Apple的指南来添加自定义字体到项目中。

然后,您可以在Flyreel仪表板面板中使用字体名称。例如,如果您已将字体my_font.ttf添加到assets文件夹中,您可以在Flyreel仪表板中使用my_font作为字体名称。

调试日志

启用调试日志以供排错用途:

void showLogs() async {
  await Flyreel.enableLogs();
}

检查Flyreel状态(根据提供的访问码和邮政编码)

您可以手动检查Flyreel的状态。此函数会向服务器发起网络请求,以获取指定邮政编码和访问码下Flyreel的状态。

void checkFlyreelStatus() async {
  try {
    final result = await Flyreel.checkStatus(
      zipCode: "80212",
      accessCode: "6M4T0T",
    );
    print("Status: ${result.status}, expires: ${result.expiration}");
  } on PlatformException catch (e) {
    print("code: ${e.code}, message: ${e.message}");
  }
}

沙盒模式

验证您的实现是否正确。使用附加参数初始化Flyreel:

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

  var configuration = FlyreelConfiguration(
      organizationId: "7d3899f1421a7650241516475",
      settingsVersion: 1,
      environment: FlyreelEnvironment.Sandbox
  );

  await Flyreel.initialize(
      application: this,
      configuration: configuration
  );

  // ...
}

示例代码

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flyreel_sdk_flutter/flyreel_sdk_flutter.dart';

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

  // 初始化Flyreel,传入organizationId和settingsVersion
  await Flyreel.initialize(FlyreelConfig(
    organizationId: "your_organization_id",
    settingsVersion: 1,
  ));

  // 显示Flyreel日志
  Flyreel.enableLogs();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

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

class _MyAppState extends State<MyApp> {
  final _messengerKey = GlobalKey<ScaffoldMessengerState>();

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      scaffoldMessengerKey: _messengerKey,
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Flyreel插件示例'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              ElevatedButton(
                child: const Text('打开Flyreel'),
                onPressed: () async {
                  await Flyreel.open();
                },
              ),
              const SizedBox(
                height: 50,
              ),
              ElevatedButton(
                child: const Text('通过URL打开Flyreel'),
                onPressed: () async {
                  // 使用深度链接字符串打开
                  await Flyreel.open(
                      deeplinkUrl:
                          "https://your.custom.url/?flyreelAccessCode=6M4T0T&flyreelZipCode=80212");
                },
              ),
              const SizedBox(
                height: 50,
              ),
              ElevatedButton(
                child: const Text('通过凭证打开Flyreel'),
                onPressed: () async {
                  // 使用邮政编码和访问码打开
                  await Flyreel.openWithCredentials(
                      zipCode: "80212",
                      accessCode: "6M4T0T",
                      shouldSkipLoginPage: false);
                },
              ),
              const SizedBox(
                height: 50,
              ),
              ElevatedButton(
                child: const Text('检查状态'),
                onPressed: () async {
                  // 使用邮政编码和访问码检查状态
                  try {
                    final result = await Flyreel.checkStatus(
                      zipCode: "80212",
                      accessCode: "6M4T0T",
                    );
                    _messengerKey.currentState?.showSnackBar(SnackBar(
                      content: Text("Status: ${result.status}, expires: ${result.expiration}"),
                    ));
                  } on PlatformException catch (e) {
                    _messengerKey.currentState?.showSnackBar(SnackBar(
                      content: Text("code: ${e.code}, message: ${e.message}"),
                    ));
                  }
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用flyreel_sdk_flutter插件的一个示例。假设你已经有一个Flutter项目,并且flyreel_sdk_flutter插件已经在pub.dev上发布并且可以通过flutter pub命令添加。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flyreel_sdk_flutter: ^latest_version  # 替换为实际最新版本号

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

2. 导入插件

在你的Dart文件中(例如main.dart),导入插件:

import 'package:flyreel_sdk_flutter/flyreel_sdk_flutter.dart';

3. 初始化SDK

通常在应用的入口点(如main.dartmain函数)初始化SDK:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化Flyreel SDK
  FlyreelSdk.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的实际API Key
    environment: 'production' // 或 'sandbox',根据你的环境选择
  );

  runApp(MyApp());
}

4. 使用SDK功能

以下是一个简单的示例,展示如何使用SDK的一些功能。具体功能取决于SDK的API,这里假设有一个功能是用来获取用户信息的。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  FlyreelSdk.initialize(
    apiKey: 'YOUR_API_KEY',
    environment: 'production'
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Flyreel SDK Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String userInfo = '';

  @override
  void initState() {
    super.initState();
    _getUserInfo();
  }

  Future<void> _getUserInfo() async {
    try {
      // 假设SDK有一个获取用户信息的方法
      var user = await FlyreelSdk.getUserInfo();
      setState(() {
        userInfo = 'Name: ${user.name}, Email: ${user.email}';
      });
    } catch (e) {
      print('Error fetching user info: $e');
      setState(() {
        userInfo = 'Error fetching user info';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Flyreel SDK Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              userInfo,
              style: TextStyle(fontSize: 20),
            ),
          ],
        ),
      ),
    );
  }
}

注意

  1. API Key:确保你替换了YOUR_API_KEY为实际的API Key。
  2. 环境:根据你的应用环境选择productionsandbox
  3. SDK功能:上面的FlyreelSdk.getUserInfo()是一个假设的方法,你需要根据实际的SDK文档来使用正确的方法。

官方文档

始终参考flyreel_sdk_flutter官方文档(如果可用)来获取最新的API信息和更新。

这样,你就可以在Flutter项目中使用flyreel_sdk_flutter插件了。

回到顶部