Flutter即时通讯插件tencent_im_sdk的使用
Tencent Cloud IM SDK 是腾讯云提供的即时通讯功能的 Flutter 插件。通过此插件,开发者可以轻松地在 Flutter 应用中实现即时通讯功能。
开始使用
初始化项目
首先,确保你的 Flutter 环境已正确配置,并且你已经安装了 Flutter 和 Dart SDK。然后,你可以创建一个新的 Flutter 项目:
flutter create tencent_im_example
进入项目目录并添加 tencent_im_sdk
插件依赖到 pubspec.yaml
文件中:
dependencies:
flutter:
sdk: flutter
tencent_im_sdk: ^1.0.0 # 请根据实际版本号进行调整
运行以下命令以安装依赖:
flutter pub get
配置示例代码
在 lib/main.dart
中引入必要的库并配置插件。以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
import 'package:tencent_im_sdk/tencent_im_sdk.dart';
Logger _log = Logger('TEST111');
void main() {
Logger.root.level = Level.ALL;
Logger.root.onRecord.listen((LogRecord rec) {
print('${rec.level.name}: ${rec.time}: ${rec.message}');
});
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Tencent IM Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Tencent IM Demo'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String userId = '123456';
String receiverId = '123456';
String version = '未知';
[@override](/user/override)
void initState() {
super.initState();
(() async {
_log.info('initState222');
await TIMSdk().unInit(); // 取消初始化(如果有旧实例)
await TIMSdk().init(appId: 1400560059, logLevel: TIMLogLevel.info); // 初始化 SDK
TIMSdk().message!.init(); // 初始化消息模块
TIMSdk().message!.messageListener.listen((event) {
print('messageListener: $event'); // 监听消息事件
});
String _version = await TIMSdk().sdkVersion; // 获取 SDK 版本
setState(() {
version = _version;
});
})();
}
void _login() {
_log.info('login2222');
_log.warning('asdsaddadsd');
print('afsadasds3333');
TIMSdk().login(
userId: userId,
userSign:
"eJyrVgrxCdYrSy1SslIy0jNQ0gHzM1NS80oy0zLBwoZGxiamZlCZ4pTsxIKCzBQlK0MTAwNTMyC2hMiUZOamAkXNjEHI3NgYIppaUZBZBBQ3MzCxMDCAmpGZDjTWLKkw0zXdNCrRPTGqzDm3KjfFI63Ewsc8x8IzvzTU0SstyjyvwNUzPTXc01apFgB1zjCs"); // 登录用户
}
void _logout() {
TIMSdk().logout(); // 登出用户
}
void _sendCustomMessage() {
TIMSdk().message!.sendCustomMessage(userId: receiverId, data: [1, 2, 3]); // 发送自定义消息
}
void _sendCustomGroupMessage() {
TIMSdk().message!.sendCustomGroupMessage(groupId: '2222212222122', data: [1, 2, 3]); // 发送群组自定义消息
}
void _sendTextMessage() {
TIMSdk().message!.sendTextMessage(userId: receiverId, text: '222222'); // 发送文本消息
}
void _createGroup() {
TIMSdk().group!.createGroup(groupId: '2222212222122', groupType: TIMGroupType.chatRoom, groupName: '我们'); // 创建群组
}
void _joinGroup() {
TIMSdk().group!.joinGroup(groupId: '2222212222122', helloMessage: '我们'); // 加入群组
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('版本: $version'),
SizedBox(height: 16),
ElevatedButton(onPressed: _login, child: Text('登录')),
SizedBox(height: 16),
ElevatedButton(onPressed: _logout, child: Text('登出')),
SizedBox(height: 16),
ElevatedButton(onPressed: _sendTextMessage, child: Text('发送文本消息')),
SizedBox(height: 16),
ElevatedButton(onPressed: _sendCustomMessage, child: Text('发送自定义消息')),
SizedBox(height: 16),
ElevatedButton(onPressed: _sendCustomGroupMessage, child: Text('发送自定义组消息')),
SizedBox(height: 16),
ElevatedButton(onPressed: _createGroup, child: Text('创建分组')),
SizedBox(height: 16),
ElevatedButton(onPressed: _joinGroup, child: Text('加入分组')),
],
),
),
);
}
}
更多关于Flutter即时通讯插件tencent_im_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter即时通讯插件tencent_im_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
tencent_im_sdk
是腾讯云即时通信(IM)的 Flutter 插件,用于在 Flutter 应用中集成即时通讯功能。它提供了丰富的 API,支持消息发送、接收、群组管理、用户资料管理等功能。以下是如何使用 tencent_im_sdk
插件的基本步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 tencent_im_sdk
插件的依赖:
dependencies:
flutter:
sdk: flutter
tencent_im_sdk: ^latest_version
然后运行 flutter pub get
来安装依赖。
2. 初始化 SDK
在使用 SDK 之前,需要先进行初始化。通常在 main.dart
中进行初始化:
import 'package:tencent_im_sdk/tencent_im_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 SDK
await TencentImSdk.init(
sdkAppId: 'your_sdk_app_id', // 替换为你的 SDK AppID
logLevel: LogLevel.V2TIM_LOG_DEBUG, // 日志级别
);
runApp(MyApp());
}
3. 登录
用户需要登录后才能使用即时通讯功能。登录时需要提供用户的 userID
和 userSig
(用户签名)。
import 'package:tencent_im_sdk/tencent_im_sdk.dart';
Future<void> login() async {
try {
await TencentImSdk.login(
userID: 'your_user_id', // 替换为你的用户ID
userSig: 'your_user_sig', // 替换为你的用户签名
);
print('登录成功');
} catch (e) {
print('登录失败: $e');
}
}
4. 发送消息
登录成功后,可以发送消息。以下是一个发送文本消息的示例:
import 'package:tencent_im_sdk/tencent_im_sdk.dart';
Future<void> sendTextMessage() async {
try {
await TencentImSdk.sendTextMessage(
text: 'Hello, Tencent IM!',
toUserID: 'receiver_user_id', // 接收者的用户ID
conversationType: ConversationType.C2C, // 会话类型,C2C 表示单聊
);
print('消息发送成功');
} catch (e) {
print('消息发送失败: $e');
}
}
5. 接收消息
可以通过监听消息事件来接收消息。以下是一个监听消息事件的示例:
import 'package:tencent_im_sdk/tencent_im_sdk.dart';
void listenForMessages() {
TencentImSdk.onMessageReceived.listen((message) {
print('收到新消息: ${message.text}');
});
}
6. 群组管理
tencent_im_sdk
还支持群组管理功能,例如创建群组、加入群组、发送群组消息等。以下是一个创建群组的示例:
import 'package:tencent_im_sdk/tencent_im_sdk.dart';
Future<void> createGroup() async {
try {
await TencentImSdk.createGroup(
groupType: 'Public', // 群组类型
groupName: 'My Group', // 群组名称
memberList: ['user1', 'user2'], // 群组成员
);
print('群组创建成功');
} catch (e) {
print('群组创建失败: $e');
}
}
7. 用户资料管理
可以获取和修改用户资料。以下是一个获取用户资料的示例:
import 'package:tencent_im_sdk/tencent_im_sdk.dart';
Future<void> getUserProfile() async {
try {
final profile = await TencentImSdk.getUserProfile(
userID: 'target_user_id', // 目标用户ID
);
print('用户资料: ${profile.nickName}');
} catch (e) {
print('获取用户资料失败: $e');
}
}
8. 登出
当用户不再需要使用即时通讯功能时,可以调用登出接口:
import 'package:tencent_im_sdk/tencent_im_sdk.dart';
Future<void> logout() async {
try {
await TencentImSdk.logout();
print('登出成功');
} catch (e) {
print('登出失败: $e');
}
}