Flutter功能插件flyreel_sdk_flutter的使用
Flutter功能插件flyreel_sdk_flutter的使用
Flyreel Flutter SDK
要求
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
更多关于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.dart
的main
函数)初始化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),
),
],
),
),
);
}
}
注意
- API Key:确保你替换了
YOUR_API_KEY
为实际的API Key。 - 环境:根据你的应用环境选择
production
或sandbox
。 - SDK功能:上面的
FlyreelSdk.getUserInfo()
是一个假设的方法,你需要根据实际的SDK文档来使用正确的方法。
官方文档
始终参考flyreel_sdk_flutter
的官方文档(如果可用)来获取最新的API信息和更新。
这样,你就可以在Flutter项目中使用flyreel_sdk_flutter
插件了。