Flutter即时通讯插件flutter_agora_messenger的使用
Flutter即时通讯插件flutter_agora_messenger的使用
声明
声网呼叫邀请SDK
声网的云信令SDK只有Android和iOS版本的,这里对他们进行了Flutter的封装,可以结合声网视频通话、音频通话还有推送SDK完成音视频通话的功能。
相关文档
安装方式
方法一:通过GitHub安装
在pubspec.yaml
文件中添加以下内容:
dependencies:
flutter_agora_messenger:
path: ../flutter_agora_messenger
方法二:通过Pub安装
(此部分未提供具体步骤,通常需要在pubspec.yaml
中添加依赖并执行flutter pub get
)
呼叫流程 (A 呼叫 B)
-
发起呼叫
A调用startOutgoingCall
发起呼叫,B收到remoteInvitationReceived
事件。 -
挂断处理
- A挂断时,A收到
localInvitationCanceled
,B收到remoteInvitationCanceled
事件。 - B挂断时,B收到
remoteInvitationRefused
,A收到localInvitationRefused
事件。
- A挂断时,A收到
-
接听处理
B接听时,B收到remoteInvitationAccepted
,A收到localInvitationAccept
事件。
Demo
配置参数
在运行Demo之前,需要修改Configs
中的参数:
appId
: 声网的AppId。tmpRtmToken
: 声网RTM Token,参考RTM TOKEN生成文档。tmpLocalNumber
: 本机号码。tmpPeerNumber
: 呼叫号码。
示例代码
以下是完整的示例代码,展示了如何使用flutter_agora_messenger
插件实现即时通讯功能。
main.dart
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_agora_messenger/flutter_agora_messenger.dart';
import 'package:flutter_agora_messenger_example/Configs.dart'; // 配置文件
import 'package:flutter_agora_messenger_example/calling_page.dart'; // 呼叫页面
import 'package:flutter_agora_messenger_example/home_page.dart'; // 主页
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
// 初始化插件
FlutterAgoraMessenger().initial(Configs.appId);
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
builder: (context, widget) {
return widget!;
},
home: HomePage(), // 启动主页
);
}
}
HomePage.dart
(主页)
import 'package:flutter/material.dart';
import 'package:flutter_agora_messenger/flutter_agora_messenger.dart';
import 'calling_page.dart'; // 呼叫页面
class HomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Agora Messenger Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 跳转到呼叫页面
Navigator.push(
context,
MaterialPageRoute(builder: (context) => CallingPage()),
);
},
child: Text('开始呼叫'),
),
),
);
}
}
CallingPage.dart
(呼叫页面)
import 'package:flutter/material.dart';
import 'package:flutter_agora_messenger/flutter_agora_messenger.dart';
import 'package:flutter_agora_messenger_example/Configs.dart'; // 配置文件
class CallingPage extends StatefulWidget {
[@override](/user/override)
_CallingPageState createState() => _CallingPageState();
}
class _CallingPageState extends State<CallingPage> {
String _status = '等待呼叫...';
[@override](/user/override)
void initState() {
super.initState();
// 初始化呼叫监听
FlutterAgoraMessenger().onRemoteInvitationReceived.listen((event) {
setState(() {
_status = '对方已接听';
});
});
FlutterAgoraMessenger().onLocalInvitationCanceled.listen((event) {
setState(() {
_status = '呼叫已取消';
});
});
FlutterAgoraMessenger().onRemoteInvitationRefused.listen((event) {
setState(() {
_status = '对方拒绝了呼叫';
});
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('呼叫页面'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(_status),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
// 开始呼叫
FlutterAgoraMessenger().startOutgoingCall(
Configs.tmpLocalNumber,
Configs.tmpPeerNumber,
Configs.tmpRtmToken,
);
},
child: Text('发起呼叫'),
),
],
),
),
);
}
}
更多关于Flutter即时通讯插件flutter_agora_messenger的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter即时通讯插件flutter_agora_messenger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_agora_messenger
是一个基于 Agora 的 Flutter 插件,用于实现即时通讯(IM)功能。Agora 提供了强大的实时音视频和消息传递能力,flutter_agora_messenger
插件则简化了在 Flutter 应用中集成 Agora IM 的过程。
1. 安装插件
首先,你需要在 pubspec.yaml
文件中添加 flutter_agora_messenger
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_agora_messenger: ^latest_version
然后运行 flutter pub get
来安装插件。
2. 初始化 Agora IM
在使用插件之前,你需要初始化 Agora IM。通常,你需要在应用的启动时进行初始化。
import 'package:flutter_agora_messenger/flutter_agora_messenger.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Agora IM
await FlutterAgoraMessenger.init(
appId: 'YOUR_AGORA_APP_ID',
);
runApp(MyApp());
}
3. 登录 Agora IM
用户需要登录到 Agora IM 才能发送和接收消息。你可以使用用户的唯一标识符(如用户ID)进行登录。
void login() async {
try {
await FlutterAgoraMessenger.login(
userId: 'USER_ID',
token: 'USER_TOKEN', // 如果需要的话
);
print('Login successful');
} catch (e) {
print('Login failed: $e');
}
}
4. 发送消息
登录成功后,你可以发送消息给其他用户或群组。
void sendMessage() async {
try {
await FlutterAgoraMessenger.sendMessage(
toUserId: 'RECEIVER_USER_ID',
message: 'Hello, this is a test message!',
);
print('Message sent successfully');
} catch (e) {
print('Failed to send message: $e');
}
}
5. 接收消息
你可以通过监听消息事件来接收其他用户发送的消息。
void listenForMessages() {
FlutterAgoraMessenger.onMessageReceived.listen((message) {
print('Received message: ${message.content} from ${message.senderId}');
});
}
6. 登出
当用户不再需要使用 IM 功能时,可以登出。
void logout() async {
try {
await FlutterAgoraMessenger.logout();
print('Logout successful');
} catch (e) {
print('Logout failed: $e');
}
}
7. 处理错误
在使用过程中,可能会遇到各种错误。你可以通过捕获异常来处理这些错误。
try {
// 调用 Agora IM 相关方法
} catch (e) {
print('An error occurred: $e');
}