Flutter即时通讯插件flutter_zcyim_sdk的使用

1. 添加依赖到yaml

pubspec.yaml文件中添加flutter_zcyim_sdk依赖:

dependencies:
  flutter_zcyim_sdk: latest

执行以下命令来安装依赖:

flutter pub get

2. 导入包

在需要使用插件功能的文件中导入:

import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';

3. 初始化SDK

在应用启动时进行SDK初始化。确保提供正确的API地址、WebSocket地址和数据存储路径。

void initSDK() async {
  await OpenIM.iMManager.initSDK(
    platform: 0, // 平台,参照IMPlatform类
    apiAddr: "http://your_api_address", // SDK的API接口地址
    wsAddr: "ws://your_websocket_address", // SDK的WebSocket地址
    dataDir: (await getApplicationDocumentsDirectory()).path, // 数据存储路径
    objectStorage: 'cos', // 图片服务器,默认'cos'
    logLevel: 6, // 日志等级,默认值6
    listener: OnConnectListener(
      onConnectSuccess: () {
        print("已成功连接到服务器");
      },
      onConnecting: () {
        print("正在连接到服务器...");
      },
      onConnectFailed: (code, errorMsg) {
        print("连接失败,错误码: $code, 错误信息: $errorMsg");
      },
      onUserSigExpired: () {
        print("登录票据已过期,请重新登录");
      },
      onKickedOffline: () {
        print("您已在其他设备上登录,是否重新登录?");
      },
    ),
  ).then((value) {
    if (value == true) {
      print("SDK初始化成功");
    }
  });
}

4. 设置监听器

设置监听器以接收各种事件通知。

void setupListeners() {
  OpenIM.iMManager
      ..userManager.setUserListener(OnUserListener(
        onSelfInfoUpdated: (userInfo) {
          print("当前登录用户信息已更新: $userInfo");
        },
      ))
      ..messageManager.setAdvancedMsgListener(OnAdvancedMsgListener(
        onRecvNewMessage: (message) {
          print("收到新消息: $message");
        },
        onRecvMessageRevoked: (messageID) {
          print("消息已被撤回: $messageID");
        },
        onRecvC2CReadReceipt: (list) {
          print("消息已读回执: $list");
        },
      ))
      ..messageManager.setMsgSendProgressListener(OnMsgSendProgressListener(
        onProgress: (messageID, progress) {
          print("消息发送进度: $messageID, 进度: $progress%");
        },
      ))
      ..friendshipManager.setFriendshipListener(OnFriendshipListener(
        onFriendApplicationRejected: (applicationInfo) {
          print("好友申请被拒绝: $applicationInfo");
        },
        onFriendApplicationDeleted: (applicationInfo) {
          print("好友申请被删除: $applicationInfo");
        },
        onFriendApplicationAdded: (applicationInfo) {
          print("好友申请已添加: $applicationInfo");
        },
        onFriendApplicationAccepted: (applicationInfo) {
          print("好友申请已同意: $applicationInfo");
        },
        onFriendAdded: (friendInfo) {
          print("好友已添加: $friendInfo");
        },
        onFriendDeleted: (friendInfo) {
          print("好友已删除: $friendInfo");
        },
        onFriendInfoChanged: (friendInfo) {
          print("好友信息已更新: $friendInfo");
        },
        onBlacklistDeleted: (blackInfo) {
          print("已从黑名单移除: $blackInfo");
        },
        onBlacklistAdded: (blackInfo) {
          print("已拉入黑名单: $blackInfo");
        },
      ))
      ..conversationManager.setConversationListener(OnConversationListener(
        onNewConversation: (list) {
          print("新增会话: $list");
        },
        onConversationChanged: (list) {
          print("已有会话发生改变: $list");
        },
        onTotalUnreadMessageCountChanged: (count) {
          print("未读消息总数已更新: $count");
        },
      ))
      ..groupManager.setGroupListener(OnGroupListener(
        onGroupMemberInfoChanged: (memberInfo) {
          print("组成员信息已更新: $memberInfo");
        },
        onGroupMemberDeleted: (memberInfo) {
          print("组成员已退出: $memberInfo");
        },
        onGroupMemberAdded: (memberInfo) {
          print("组成员已加入: $memberInfo");
        },
        onGroupApplicationRejected: (applicationInfo) {
          print("组申请被拒绝: $applicationInfo");
        },
        onGroupApplicationDeleted: (applicationInfo) {
          print("组申请被删除: $applicationInfo");
        },
        onGroupApplicationAdded: (applicationInfo) {
          print("组申请已新增: $applicationInfo");
        },
        onGroupApplicationAccepted: (applicationInfo) {
          print("组申请已被接受: $applicationInfo");
        },
        onJoinedGroupDeleted: (groupInfo) {
          print("退出群组: $groupInfo");
        },
        onJoinedGroupAdded: (groupInfo) {
          print("加入群组: $groupInfo");
        },
        onGroupInfoChanged: (groupInfo) {
          print("组资料已变更: $groupInfo");
        },
      ))
      ..signalingManager.setSignalingListener(OnSignalingListener(
        onReceiveNewInvitation: (info) {
          print("收到音视频通话邀请: $info");
        },
        onInviteeRejected: (info) {
          print("被邀请者拒绝音视频通话: $info");
        },
        onInviteeAccepted: (info) {
          print("被邀请者同意音视频通话: $info");
        },
        onInvitationTimeout: (info) {
          print("邀请超时未接通: $info");
        },
        onInvitationCancelled: (info) {
          print("邀请被取消: $info");
        },
      ));
}

5. 登录

使用login方法进行登录操作。

void login() async {
  await OpenIM.iMManager.login(
    uid: "your_user_id", // 用户ID
    token: "your_token", // Token
  ).then((userInfo) {
    print("登录成功,当前用户信息: $userInfo");
  }).catchError((error) {
    print("登录失败: $error");
  });
}

示例代码完整示例

以下是一个完整的示例代码,展示了如何初始化、登录、设置监听器并处理基本的IM功能。

import 'package:flutter/material.dart';
import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.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();
    initSDK();
    setupListeners();
  }

  void initSDK() async {
    await OpenIM.iMManager.initSDK(
      platform: 0,
      apiAddr: "http://your_api_address",
      wsAddr: "ws://your_websocket_address",
      dataDir: (await getApplicationDocumentsDirectory()).path,
      objectStorage: 'cos',
      logLevel: 6,
      listener: OnConnectListener(
        onConnectSuccess: () {
          print("已成功连接到服务器");
        },
        onConnecting: () {
          print("正在连接到服务器...");
        },
        onConnectFailed: (code, errorMsg) {
          print("连接失败,错误码: $code, 错误信息: $errorMsg");
        },
        onUserSigExpired: () {
          print("登录票据已过期,请重新登录");
        },
        onKickedOffline: () {
          print("您已在其他设备上登录,是否重新登录?");
        },
      ),
    ).then((value) {
      if (value == true) {
        print("SDK初始化成功");
      }
    });
  }

  void setupListeners() {
    OpenIM.iMManager
        ..userManager.setUserListener(OnUserListener(
          onSelfInfoUpdated: (userInfo) {
            print("当前登录用户信息已更新: $userInfo");
          },
        ))
        ..messageManager.setAdvancedMsgListener(OnAdvancedMsgListener(
          onRecvNewMessage: (message) {
            print("收到新消息: $message");
          },
          onRecvMessageRevoked: (messageID) {
            print("消息已被撤回: $messageID");
          },
          onRecvC2CReadReceipt: (list) {
            print("消息已读回执: $list");
          },
        ))
        ..messageManager.setMsgSendProgressListener(OnMsgSendProgressListener(
          onProgress: (messageID, progress) {
            print("消息发送进度: $messageID, 进度: $progress%");
          },
        ))
        ..friendshipManager.setFriendshipListener(OnFriendshipListener(
          onFriendApplicationRejected: (applicationInfo) {
            print("好友申请被拒绝: $applicationInfo");
          },
          onFriendApplicationDeleted: (applicationInfo) {
            print("好友申请被删除: $applicationInfo");
          },
          onFriendApplicationAdded: (applicationInfo) {
            print("好友申请已添加: $applicationInfo");
          },
          onFriendApplicationAccepted: (applicationInfo) {
            print("好友申请已同意: $applicationInfo");
          },
          onFriendAdded: (friendInfo) {
            print("好友已添加: $friendInfo");
          },
          onFriendDeleted: (friendInfo) {
            print("好友已删除: $friendInfo");
          },
          onFriendInfoChanged: (friendInfo) {
            print("好友信息已更新: $friendInfo");
          },
          onBlacklistDeleted: (blackInfo) {
            print("已从黑名单移除: $blackInfo");
          },
          onBlacklistAdded: (blackInfo) {
            print("已拉入黑名单: $blackInfo");
          },
        ))
        ..conversationManager.setConversationListener(OnConversationListener(
          onNewConversation: (list) {
            print("新增会话: $list");
          },
          onConversationChanged: (list) {
            print("已有会话发生改变: $list");
          },
          onTotalUnreadMessageCountChanged: (count) {
            print("未读消息总数已更新: $count");
          },
        ))
        ..groupManager.setGroupListener(OnGroupListener(
          onGroupMemberInfoChanged: (memberInfo) {
            print("组成员信息已更新: $memberInfo");
          },
          onGroupMemberDeleted: (memberInfo) {
            print("组成员已退出: $memberInfo");
          },
          onGroupMemberAdded: (memberInfo) {
            print("组成员已加入: $memberInfo");
          },
          onGroupApplicationRejected: (applicationInfo) {
            print("组申请被拒绝: $applicationInfo");
          },
          onGroupApplicationDeleted: (applicationInfo) {
            print("组申请被删除: $applicationInfo");
          },
          onGroupApplicationAdded: (applicationInfo) {
            print("组申请已新增: $applicationInfo");
          },
          onGroupApplicationAccepted: (applicationInfo) {
            print("组申请已被接受: $applicationInfo");
          },
          onJoinedGroupDeleted: (groupInfo) {
            print("退出群组: $groupInfo");
          },
          onJoinedGroupAdded: (groupInfo) {
            print("加入群组: $groupInfo");
          },
          onGroupInfoChanged: (groupInfo) {
            print("组资料已变更: $groupInfo");
          },
        ))
        ..signalingManager.setSignalingListener(OnSignalingListener(
          onReceiveNewInvitation: (info) {
            print("收到音视频通话邀请: $info");
          },
          onInviteeRejected: (info) {
            print("被邀请者拒绝音视频通话: $info");
          },
          onInviteeAccepted: (info) {
            print("被邀请者同意音视频通话: $info");
          },
          onInvitationTimeout: (info) {
            print("邀请超时未接通: $info");
          },
          onInvitationCancelled: (info) {
            print("邀请被取消: $info");
          },
        ));
  }

  void login() async {
    await OpenIM.iMManager.login(
      uid: "your_user_id",
      token: "your_token",
    ).then((userInfo) {
      print("登录成功,当前用户信息: $userInfo");
    }).catchError((error) {
      print("登录失败: $error");
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('IM Plugin Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: login,
                child: Text("登录"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter即时通讯插件flutter_zcyim_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


flutter_zcyim_sdk 是一个用于在 Flutter 应用中实现即时通讯功能的插件。以下是如何使用该插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_zcyim_sdk 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_zcyim_sdk: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化 SDK

在你的 Flutter 应用中,首先需要初始化 flutter_zcyim_sdk。通常,你可以在 main.dart 或应用的入口文件中进行初始化。

import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 SDK
  await FlutterZcyimSdk.init(
    appKey: 'your_app_key',
    appSecret: 'your_app_secret',
  );
  
  runApp(MyApp());
}

3. 用户登录

在用户登录时,你需要调用 login 方法来登录到即时通讯服务器。

import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';

void loginUser(String userId, String token) async {
  try {
    await FlutterZcyimSdk.login(userId: userId, token: token);
    print('登录成功');
  } catch (e) {
    print('登录失败: $e');
  }
}

4. 发送消息

你可以使用 sendMessage 方法来发送消息。

import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';

void sendTextMessage(String targetId, String text) async {
  try {
    await FlutterZcyimSdk.sendMessage(
      targetId: targetId,
      messageType: 'text',
      content: text,
    );
    print('消息发送成功');
  } catch (e) {
    print('消息发送失败: $e');
  }
}

5. 接收消息

你可以通过监听消息事件来接收消息。

import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';

void listenForMessages() {
  FlutterZcyimSdk.onMessageReceived.listen((message) {
    print('收到消息: ${message.content}');
  });
}

6. 用户登出

在用户登出时,调用 logout 方法。

import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';

void logoutUser() async {
  try {
    await FlutterZcyimSdk.logout();
    print('登出成功');
  } catch (e) {
    print('登出失败: $e');
  }
}

7. 其他功能

flutter_zcyim_sdk 可能还提供了其他功能,如群组管理、好友管理、消息撤回等。你可以参考插件的官方文档或源码来了解更多细节。

8. 处理错误

在使用 SDK 时,可能会遇到各种错误。确保你正确处理这些错误,并提供适当的用户反馈。

try {
  // 调用 SDK 方法
} catch (e) {
  print('发生错误: $e');
  // 处理错误
}

9. 释放资源

在应用退出时,确保释放 SDK 占用的资源。

void dispose() {
  FlutterZcyimSdk.dispose();
}

10. 调试和日志

你可以启用 SDK 的调试模式来查看详细的日志信息。

FlutterZcyimSdk.setDebugMode(true);
回到顶部