andrew_im_sdk 0.1.22 copy "andrew_im_sdk: ^0.1.22" to clipboard
andrew_im_sdk: ^0.1.22 copied to clipboard

Andrew IM SDK for Flutter — HTTP + WebSocket client for real-time messaging, conversations, groups, audio/video calls and more.

andrew_im_sdk #

Flutter 即时通讯 SDK:封装 IM 服务的 HTTP 接口与 WebSocket 长连接,提供消息、会话、群组、好友、音视频通话、在线状态、搜索等完整能力。

入口:AndrewIMClient,业务按 Manager 划分,供 Flutter 应用 直接集成。

安装 #

dependencies:
  andrew_im_sdk: ^0.1.6

快速开始 #

初始化 SDK #

import 'package:andrew_im_sdk/andrew_im_sdk.dart';

final client = AndrewIMClient(autoReconnect: true);
await client.init(
  baseUrl: 'https://your-im-gateway.example.com',
  token: '<your-jwt-token>',
  tenantId: '<tenant>',
  userId: '<uid>',
  deviceId: '<device>',
  platform: 'flutter',
);
client.addListener(MyListener());
await client.connect();

本地消息库 #

// 打开会话:先读本地,再按 seq 增量补洞(网络失败仍返回本地)
final messages = await client.getConversationMessages(
  conversationID: sessionId,
  limit: 50,
);

// 仅本地(离线秒开)
final cached = await client.getConversationMessages(
  conversationID: sessionId,
  syncRemote: false,
);

// 自定义存储(默认:移动端文件库 / Web 内存)
final client = AndrewIMClient(messageStore: MemoryLocalMessageStore());

收发、WS 推送、连接后 seq 同步都会自动写入 messageStore

消息功能 #

// 发消息
await client.messageManager!.sendMessage(SendMessageRequest(
  targetId: peerId,
  targetType: MessageTargetType.user,
  type: MessageType.text,
  content: '你好',
));

// 会话 / 好友 / 群
final conv = await client.conversationManager!.getOneConversation(targetId: peerId);
await client.friendshipManager!.addFriendRequest(userID: peerId, reqMessage: '加个好友');
final requests = await client.friendshipManager!.getFriendApplicationListAsRecipient(
  status: FriendRequestStatus.pending,
);
await client.groupManager!.createGroup(groupName: '项目组', memberUserIDs: [peerId]);

好友请求状态 #

final all = await client.friendshipManager!.getFriendApplicationListAsRecipient(
  status: FriendRequestStatus.unspecified,
);

final pending = all.where((item) => item.status == FriendRequestStatus.pending);
final handled = all.where((item) => item.status != FriendRequestStatus.pending);

音视频通话 #

// 发起视频通话(一键完成信令+媒体+鉴权)
final session = await client.callManager!.startCall(
  calleeID: 'user123',
  video: true, // false 为音频通话
);

// 接听通话
await client.callManager!.answerCall(callID: callId, video: true);

// 挂断通话
await client.callManager!.hangup(callID: callId);

// 媒体控制
await client.callManager!.setMuted(true);        // 静音
await client.callManager!.setCameraEnabled(false); // 关摄像头
await client.callManager!.switchCamera();         // 切换摄像头

// 渲染视频
final mediaEngine = client.callManager!.mediaEngine;
RTCVideoView(mediaEngine!.remoteRenderer); // 远端视频
RTCVideoView(mediaEngine!.localRenderer);  // 本地视频

事件监听 #

class MyListener extends IMEventListener {
  @override
  void onNewMessage(IMMessage message) { /* 收到新消息 */ }
  @override
  void onConnectionStateChanged(ConnectionState state) { /* 连接状态变化 */ }
  @override
  void onKicked(KickedEvent e) { /* 被踢下线 */ }
  @override
  void onCallEvent(CallEvent e) { /* 通话信令 */ }
  // onMessagesSynced / onTyping / onReadReceipt / onMessageRecall / onDraftUpdated / ...
}

Managers #

Manager 能力
friendshipManager 好友申请/列表/黑名单/隐私/同步
groupManager 建群/成员/邀请/申请/禁言/设置
conversationManager 会话 CRUD/置顶/归档/清消息/同步
messageManager 收发/历史/转发/撤回/反应/举报
callManager 1v1/群通话(信令+媒体+鉴权)
presenceManager 在线状态、订阅、踢设备
searchManager 用户/消息/群/全局/语义搜索
notificationManager 系统通知、推送设备、角标
unreadManager 未读数、已读 seq、已读回执
botManager Bot 创建/发消息
webhookManager 出站 Webhook
translateApi 消息翻译
draftApi 草稿云同步

音视频通话特性 #

  • 一键通话startCall() / answerCall() 自动完成信令+媒体+鉴权
  • WHIP/WHEP 协议:基于 IETF 标准(RFC 9725)
  • Bearer Token 鉴权:自动注入 JWT token(RFC 6750)
  • 按需初始化:仅在服务端返回媒体配置时启动引擎
  • 自动重连:ICE/网络失败自动重连(最多 3 次)
  • 自动心跳:每 10 秒自动保活
  • 媒体控制:静音、开关摄像头、切换摄像头
  • 群通话:支持多人音视频通话

鉴权 #

SDK 通过 HTTP header 携带鉴权信息:

Header 说明
Authorization Bearer <jwt-token>
X-Tenant-ID 租户 ID
X-User-Id 用户 ID
X-Device-Id 设备 ID
X-Platform 平台标识(flutter / android / ios / web)

token 过期后调用 client.updateToken(newToken) 刷新。

音视频通话鉴权:WHIP/WHEP 请求自动携带 Authorization: Bearer <token> 头,无需额外配置。

功能特性 #

  • WebSocket 长连接 + 自动重连(默认无限重试,指数退避)
  • seq 增量同步
  • 消息去重
  • 草稿云同步
  • 消息翻译
  • 多端在线 / 踢设备
  • 音视频通话(WebRTC)
  • 群通话(SFU)

文档 #

  • 音视频通话指南doc/音视频通话指南.md
  • 更新日志CHANGELOG.md
  • 接口文档:https://www.lemo-ai.com

导入约定 #

包内使用 package:andrew_im_sdk/...;宿主只需 import 'package:andrew_im_sdk/andrew_im_sdk.dart';

依赖 #

  • Dart SDK: ^3.5.0
  • Flutter SDK
  • http, web_socket_channel, dio
  • flutter_webrtc (v0.1.0+)

License #

MIT

1
likes
145
points
143
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

Andrew IM SDK for Flutter — HTTP + WebSocket client for real-time messaging, conversations, groups, audio/video calls and more.

Homepage

Topics

#im #chat #websocket #webrtc #messaging

License

MIT (license)

Dependencies

dio, flutter, flutter_webrtc, http, path, path_provider, web_socket_channel

More

Packages that depend on andrew_im_sdk