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

1 回复

更多关于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. 登录

用户需要登录后才能使用即时通讯功能。登录时需要提供用户的 userIDuserSig(用户签名)。

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');
  }
}
回到顶部