flutter_ytim_example
Demonstrates how to use the flutter_ytim plugin.
概要
YouTeacher IM 快速开发SDK。 支持两种集成方式:
- 快速集成。几行代码完成所有功能接入,使用内置UI界面。
- 自定义集成。使用核心功能API,自定义联系人列表和聊天界面。
功能
- IM账号自动注册/登陆
- 联系人列表
- 未读消息红点显示
- 最后一条消息展示
- 1v1聊天
- 群组聊天
- 客服聊天
- 创建群组
- 修改备注
- 发送图片
- 保存图片
- 未读/已读状态显示
- 自己的消息撤回
- 被踢下线回调
- 内置UI组件国际化支持
init YTIM 快速集成
在应用顶层集成provide,用于界面更新
MultiProvider(
providers: [
ChangeNotifierProvider(
create: (context) => IMStore({}, {}, {}, [], [], [], [])),
],
child: HomePage()
)
初始化YTIM插件
YTIM().init(
loginToken:'',
websocketUrl: 'wss://preim.rentalbike.shop:18081',
onConnectErrorCallback: (WebSocketChannelException error) {},
imLoginSuccessCallback: (IMUser user) {
/// 获取IM总数据
_getIMTotalData();
},
loginFailCallback: (int code) {
/// 登录失败
/// code = 412 时,token失效,需要刷新token重新登录
},
revokeMsgCallback: (IMCommand command) {
/// 消息撤回
if (mounted) {
IMUtils.processRevokeMessage(context, command);
}
imEventBus.fire(
IMEventCommand(IMEventCommandType.revokeMsg, command: command));
},
sysMsgCallback: (IMSysMessage msg) {
/// 系统消息
if (mounted) {
IMUtils.processSysMessage(context, msg);
}
},
groupControlCallback: (IMGroupControl msg) {
/// 群组操作的消息
if (mounted) {
IMUtils.processGroupControlMessage(context, msg);
}
},
chatMessageCallback: (IMBaseMessage message) {
/// 聊天消息的回调,包括群组、单聊、客服 用message.chatType判断
if (mounted) {
IMUtils.processChatMessage(context, message);
}
/// demo中消息发送
imEventBus.fire(
IMEventCommand(IMEventCommandType.chatMsg, message: message));
},
logEnabled: true);
添加回调
YTIM().addKickOutCallback(() {
/// IM异地登录操作
YTLog.d('UI','IM 用户异地登录,当前用户被踢出');
});
YTIM().addMsgReadCallback((IMCommand command) {
/// 消息已读
/// demo中消息发送
imEventBus
.fire(IMEventCommand(IMEventCommandType.readMsg, command: command));
});
YTIM().addUnreadCountCallback((value) {
/// 消息未读数量
unreadCount = value;
setState(() {});
});
拉取IM总数据
YTIM().getIMTotalData(context, (value) {}, (error) {});
在程序回到前台时,检查IM连接状态。
```
YTIM().checkConnectStatus();
```
断开连接,释放资源。
```
YTIM().release();
```
一些事件类型
事件 | 类名 |
---|---|
消息基类 | IMBaseMessage |
用户信息 | IMUser |
用户列表 | IMUserList |
历史消息列表 | IMHistoryMsgList |
未读消息个数 | IMUnreadCount |
IM指令类型 | IMCommand |
可用的全局变量
功能 | 方法 |
---|---|
自己的IM用户信息 | YTIM().mUser |
当前正在与之聊天的用户id | YTIM().currentChatUserId |
当前正在与之聊天的群组id | YTIM().currentGroupId |