Skip to main content

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.

Changelog #

All notable changes to andrew_im_sdk will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.


0.1.22 - 2026-09-07 #

Changed #

  • HTTP 客户端只认 andrew-libs 统一信封 {code,message,data}:成功返回内层 data(配合网关透传、不再剥信封)。
  • Status API:兼容信封内层嵌套 post 字段。

0.1.21 - 2026-09-03 #

Added #

  • 语音转视频协商:requestVideoUpgrade / respondVideoUpgrade;信令 upgrade_video_req|ok|no;CallEvent.mediaUpgradeAction。

Changed #

  • 通话录制默认单文件(本端视频 + OUTPUT/INPUT 混音),不再另存远端视频轨。

0.1.20 - 2026-09-03 #

Added #

  • 通话音频电平轮询:onAudioLevels / activeSpeakerId(WebRTC getStats)。
  • Android 屏幕共享:requestCapturePermission + andrew_im_sdk/screen_share 前台服务后再 getDisplayMedia。
  • iOS 屏幕共享:getDisplayMedia 使用 video.deviceId = broadcast(需宿主 Broadcast Upload Extension + App Group)。

0.1.19 - 2026-09-03 #

Changed #

  • 虚拟背景:setVirtualBackground(mode, imagePath) 经 setVirtualBackground channel 做人像背景虚化/自定义图。
  • 通话录制:有远端时用 OUTPUT 采扬声器混音;另存远端视频轨(path|remotePath)。

0.1.18 - 2026-09-03 #

Added #

  • 虚拟背景对 WHIP 发布轨做帧虚化(宿主 MethodChannel('andrew_im_sdk/video_fx'))。
  • CallMediaEngine.startRecording / stopRecording 本端落 mp4;CallManager.startCallRecording。

0.1.17 - 2026-09-03 #

Added #

  • 通话实时字幕 / 虚拟背景 / 录制信令:POST /v1/im/calls/{id}/media-event,WS call_subtitle / call_virtual_bg_toggle / call_recording_*。
  • CallManager.publishSubtitle / setVirtualBackground。

0.1.16 - 2026-09-03 #

Added #

  • 青少年模式:YouthModeManager / IMYouthModeSettings,/v1/im/youth-mode*。
  • 好友 24h 状态:StatusManager / IMStatusPost,/v1/im/status*。
  • 语音转文字:TranscribeApi。
  • 群频道/讨论组、群相册/文件、群收款、接龙等 Group/Conversation API。

0.1.11 - 2026-09-03 #

Added #

  • MessageType.poll(14)与 MessageType.encrypted(13)。
  • 群投票:IMGroupPoll / GroupPollStatus / GroupPollResultVisibility,GroupApi / GroupManager 发起、列表、详情、投票、改票、结束、删除、补选项、提醒未投。
  • RelationNotificationEvent.pollId,识别 group_poll_* 应用内通知。

0.1.10 - 2026-07-30 #

Changed #

  • 枚举解析仅接受 proto 枚举名或数字,去掉短名/模糊兼容(如 online、TEXT、pending)。

0.1.9 - 2026-07-30 #

Changed #

  • 枚举对齐 proto:IMSession.type → IMSessionType;新增 lastMessageType(MessageType)。
  • IMOnlineStatus.status → UserStatus;isOnline 判断 UserStatus.online。
  • 群邀请/入群申请 status → GroupInviteStatus / GroupApplicationStatus。
  • IMTypeCount.type → MessageType。

0.1.8 - 2026-07-29 #

Fixed #

  • WebSocket 连接 :0 端口 bug:修复 ws_connect_io.dart 中 Uri.replace 对 ws:// scheme 丢失默认端口导致连接地址变成 http://host:0/... 的问题,改用手动拼接 query string 保持原始 URL 不变。

0.1.7 - 2026-07-29 #

Added #

  • debugMode 参数:AndrewIMClient(debugMode: true) 开启后,所有 HTTP 请求都会通过 debugPrint 打印方法/URL/请求体/响应体(最多 600 字符),方便排查 API 问题。

0.1.6 - 2026-07-29 #

Changed #

  • 断线重连:默认 maxReconnectAttempts = 0(无限重试),指数退避上限 reconnectMaxDelay(默认 30s)。断网数分钟后再恢复也会继续连上,不再在约 8 次后永久放弃。
  • 发送超时:sendMessage HTTP 请求默认 20s timeout。
  • 导出 ChatApiException。

Compatibility #

  • 若需旧行为,构造时传入 maxReconnectAttempts: 8 即可。

0.1.5 - 2026-07-29 #

Added #

  • 本地消息存储:
    • LocalMessageStore 抽象 + MemoryLocalMessageStore / FileLocalMessageStore
    • init 后自动打开用户维度文件库(Web 回退内存),恢复 seq 水位
    • 收发 / WS 推送 / seq 同步自动 upsert 落盘
    • 新增 AndrewIMClient.getConversationMessages:先读本地再增量补洞,离线可秒开

Compatibility #

  • 默认行为对宿主透明;可通过构造注入自定义 LocalMessageStore
  • 公开导出 SeqRange / SessionMessageBatch 便于宿主直接 pull-by-seq

0.1.4 - 2026-07-28 #

Changed #

  • 好友请求状态 enum 化:
    • IMFriendApplication.status 从 String 改为 FriendRequestStatus
    • FriendApi.getFriendRequests() / FriendshipManager.getFriendApplicationListAsRecipient() 改为使用 enum 传递状态筛选
    • 与 andrew-chat 最新 protobuf 契约对齐,避免好友请求状态在服务端 / SDK / App 之间出现字符串漂移

Compatibility #

  • FriendRequestStatus.fromJson() 兼容 protobuf JSON 的两种返回形态:
    • 数字枚举值(1 / 2 / 3)
    • 枚举名字符串(如 FRIEND_REQUEST_STATUS_PENDING)

0.1.3 - 2026-07-28 #

Fixed #

  • Platform header 修复: init 未传 platform 时,X-Platform header 与 WS query 出现 null(http client 构造时误用原始参数而非自动检测结果)

0.1.2 - 2026-07-28 #

Added #

  • 跨群群邀请列表: groupManager.getReceivedGroupInvites()(被邀请人视角,跨群)
    • 新增模型 IMGroupInviteListResult
    • 对应 chat-api GET /v1/im/groups/invites/received

Changed #

  • 搜索结果模型归位:IMUserSearchResult、IMMessageSearchResult、IMGroupSearchResult、IMMediaSearchResult、IMGlobalSearchListResult、IMSearchHistoryListResult、IMSemanticSearchResult、IMSemanticSearchListResult 统一迁移至 model/search.dart(此前误置于 api 层),主导出文件正常导出

0.1.1 - 2026-07-27 #

Fixed #

  • Platform 自动检测: 初始化时 platform 参数不再写死 flutter,改为 dart:io Platform + kIsWeb 自动检测(android/ios/macos/windows/linux/web),与 andrew-chat 的 platform 类型对齐

0.1.0 - 2026-07-27 #

Added #

WebRTC 音视频通话(重大功能)

  • CallMediaEngine: 完整的 WHIP/WHEP 媒体引擎

    • WHIP 推流(发布本地音视频流)
    • WHEP 拉流(订阅远端音视频流)
    • Bearer Token 鉴权(符合 IETF WHIP RFC 9725)
    • 自动重连机制(最多 3 次)
    • 静音/开关摄像头/切换摄像头
    • 本地/远端视频渲染器(RTCVideoRenderer)
  • CallManager 增强: 一键完成信令+媒体

    • startCall() - 发起通话(自动完成信令+媒体+鉴权)
    • answerCall() - 接听通话(自动完成信令+媒体+鉴权)
    • hangup() - 挂断通话(自动停止媒体+信令)
    • rejectCall() - 拒绝通话
    • cancelCall() - 取消通话
    • startGroupCall() - 发起群通话
    • joinGroupCall() - 加入群通话
    • setMuted() / setCameraEnabled() / switchCamera() - 媒体控制
    • hasMediaEngine - 检查媒体引擎状态
  • 按需初始化机制

    • 仅在服务端返回媒体配置时才启动引擎
    • 节省资源,支持纯信令场景
    • 自动检测 session.media 字段
  • 自动心跳保活

    • 每 10 秒自动发送心跳
    • 检测 shouldReconnectMedia 自动重连媒体
    • 检测 callEnded 自动挂断
  • Bearer Token 鉴权

    • WHIP/WHEP 请求自动携带 JWT token
    • 符合 IETF RFC 6750 标准
    • 无需手动配置

Changed #

  • CallManager 重构: 从纯信令管理器升级为完整的通话管理器
  • 依赖更新:
    • 添加 flutter_webrtc: ^0.14.0
    • 添加 dio: ^5.4.0
    • 添加 flutter SDK 依赖

Removed #

  • 删除 Deprecated API:

    • initiateCall() → 使用 startCall() 替代
    • acceptCall() → 使用 answerCall() 替代
    • createGroupCall() → 使用 startGroupCall() 替代
    • joinCall() → 使用 joinGroupCall() 替代
    • endCall() → 使用 hangup() 替代
  • 删除 client.dart 中的重复方法:

    • callHeartbeat() → 使用 callManager!.heartbeat() 替代
    • getCallSession() → 使用 callManager!.getCallSession() 替代
    • createGroupCall() → 使用 callManager!.startGroupCall() 替代
    • joinCall() → 使用 callManager!.joinGroupCall() 替代

Documentation #

  • 新增 doc/音视频通话指南.md - 完整的通话功能使用文档
  • 更新 README.md - 添加音视频通话特性说明

0.0.2 - 2026-07-20 #

Added #

  • 消息、会话、群组、好友等 IM 核心功能
  • WebSocket 长连接管理
  • 消息同步、未读数管理
  • 搜索、通知、Bot、Webhook 等扩展功能
  • 消息翻译、草稿云同步
  • 通话信令 API(CallManager 基础版)

升级指南 #

从 0.0.2 升级到 0.1.0 #

1. 更新依赖

dependencies:
  andrew_im_sdk: ^0.1.0  # 从 ^0.0.2 升级

2. API 迁移

旧代码(v0.0.2):

// 发起通话(仅信令)
final session = await client.callManager!.initiateCall(
  calleeID: 'user123',
  callType: CallApi.callTypeVideo,
);

// 手动实现 WebRTC...

新代码(v0.1.0):

// 发起通话(信令+媒体+鉴权一体化)
final session = await client.callManager!.startCall(
  calleeID: 'user123',
  video: true,
);

// SDK 自动处理媒体引擎
final mediaEngine = client.callManager!.mediaEngine;
RTCVideoView(mediaEngine!.remoteRenderer);

3. 按需初始化

v0.1.0 采用按需初始化机制,媒体引擎仅在服务端返回媒体配置时才启动:

final session = await client.callManager!.startCall(...);

if (client.callManager!.hasMediaEngine) {
  // 媒体引擎已启动
  final engine = client.callManager!.mediaEngine!;
  // 使用引擎...
} else {
  // 服务端未返回媒体配置,引擎未启动
}

4. 鉴权

v0.1.0 自动处理 WHIP/WHEP 鉴权,无需手动配置:

// 旧代码(需要手动添加 token)
final headers = {
  'Authorization': 'Bearer $token',
};

// 新代码(SDK 自动注入)
// 无需任何配置,SDK 自动使用初始化时的 JWT token

贡献者 #

  • Andrew Team

许可证 #

Copyright © 2026 Lemo AI. All rights reserved.

1
likes
145
points
211
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