IM SDK 主核心类,负责 IM SDK 的初始化、登录、消息收发,建群退群等功能。
|
abstract boolean | initSDK (Context context, int sdkAppID, V2TIMSDKConfig config, V2TIMSDKListener listener) |
|
abstract void | unInitSDK () |
|
abstract String | getVersion () |
|
abstract long | getServerTime () |
|
abstract void | login (String userID, String userSig, V2TIMCallback callback) |
|
abstract void | logout (V2TIMCallback callback) |
|
abstract String | getLoginUser () |
|
abstract int | getLoginStatus () |
|
abstract void | addSimpleMsgListener (V2TIMSimpleMsgListener v2TIMSimpleMsgListener) |
|
abstract void | removeSimpleMsgListener (V2TIMSimpleMsgListener v2TIMSimpleMsgListener) |
|
abstract String | sendC2CTextMessage (String text, String userID, V2TIMValueCallback< V2TIMMessage > callback) |
|
abstract String | sendC2CCustomMessage (byte[] customData, String userID, V2TIMValueCallback< V2TIMMessage > callback) |
|
abstract String | sendGroupTextMessage (String text, String groupID, int priority, V2TIMValueCallback< V2TIMMessage > callback) |
|
abstract String | sendGroupCustomMessage (byte[] customData, String groupID, int priority, V2TIMValueCallback< V2TIMMessage > callback) |
|
abstract void | setGroupListener (V2TIMGroupListener listener) |
|
abstract void | createGroup (String groupType, String groupID, String groupName, V2TIMValueCallback< String > callback) |
|
abstract void | joinGroup (String groupID, String message, V2TIMCallback callback) |
|
abstract void | quitGroup (String groupID, final V2TIMCallback callback) |
|
abstract void | dismissGroup (String groupID, final V2TIMCallback callback) |
|
abstract void | getUsersInfo (List< String > userIDList, V2TIMValueCallback< List< V2TIMUserFullInfo >> callback) |
|
abstract void | setSelfInfo (V2TIMUserFullInfo info, V2TIMCallback callback) |
|
◆ getInstance()
1.1 获取 V2TIMManager 管理器实例。
◆ initSDK()
1.2 初始化 SDK
- 参数
-
context | 上下文 |
sdkAppID | 应用 ID,必填项,可以在控制台中获取 |
config | 配置信息 |
listener | SDK的回调 |
- 返回
- true:成功;false:失败,如果 context 为空会返回失败
◆ unInitSDK()
abstract void unInitSDK |
( |
| ) |
|
|
abstract |
◆ getVersion()
abstract String getVersion |
( |
| ) |
|
|
abstract |
◆ getServerTime()
abstract long getServerTime |
( |
| ) |
|
|
abstract |
1.5 获取服务器当前时间
可用于信令离线推送场景下超时判断。
示例代码请参考 TUIKit: 信令邀请方:TRTCAVCallImpl -> getOfflinePushInfo 设置邀请的服务器时间 serverTime 。 信令接收方:OfflineMessageDispatcher -> redirect,收到信令推送,根据 serverTime 判断信令是否超时 。
- 返回
- 服务器时间,单位 s
◆ login()
abstract void login |
( |
String |
userID, |
|
|
String |
userSig, |
|
|
V2TIMCallback |
callback |
|
) |
| |
|
abstract |
2.1 登录
登录需要设置用户名 userID 和用户签名 userSig,userSig 生成请参考 UserSig 后台 API。
- 注意
- 请注意如下特殊逻辑:
- 登陆时票据过期:login 函数的回调会返回 ERR_USER_SIG_EXPIRED:6206 错误码,此时生成新的 userSig 重新登录。
- 在线时票据过期:用户在线期间也可能收到 V2TIMListener -> onUserSigExpired 回调,此时也是需要您生成新的 userSig 并重新登录。
- 在线时被踢下线:用户在线情况下被踢,SDK 会通过 V2TIMListener -> onKickedOffline 回调通知给您,此时可以 UI 提示用户,并再次调用 login() 重新登录。
◆ logout()
2.2 登出
退出登录,如果切换账号,需要 logout 回调成功或者失败后才能再次 login,否则 login 可能会失败。
◆ getLoginUser()
abstract String getLoginUser |
( |
| ) |
|
|
abstract |
◆ getLoginStatus()
abstract int getLoginStatus |
( |
| ) |
|
|
abstract |
2.4 获取登录状态
如果用户已经处于已登录和登录中状态,请勿再频繁调用登录接口登录。
- 返回
- 登录状态
◆ addSimpleMsgListener()
◆ removeSimpleMsgListener()
3.2 移除基本消息(文本消息和自定义消息)的事件监听器
◆ sendC2CTextMessage()
3.3 发送单聊普通文本消息(最大支持 8KB)
文本消息支持云端的脏词过滤,如果用户发送的消息中有敏感词,callback 回调将会返回 80001 错误码。
- 返回
- 返回消息的唯一标识 ID
- 注意
- 该接口发送的消息默认会推送(前提是在 V2TIMOfflinePushManager 开启了推送),如果需要自定义推送(标题和内容),请调用 V2TIMMessageManager.sendMessage 接口。
◆ sendC2CCustomMessage()
3.4 发送单聊自定义(信令)消息(最大支持 8KB)
自定义消息本质就是一端二进制 buffer,您可以在其上自由组织自己的消息格式(常用于发送信令),但是自定义消息不支持云端敏感词过滤。
- 返回
- 返回消息的唯一标识 ID
- 注意
- 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMMessageManager.sendMessage 接口。
◆ sendGroupTextMessage()
3.5 发送群聊普通文本消息(最大支持 8KB)
- 参数
-
priority | 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
- V2TIMMessage.V2TIM_PRIORITY_HIGH:云端会优先传输,适用于在群里发送重要消息,比如主播发送的文本消息等。
- V2TIMMessage.V2TIM_PRIORITY_NORMAL:云端按默认优先级传输,适用于在群里发送非重要消息,比如观众发送的弹幕消息等。
|
- 返回
- 返回消息的唯一标识 ID
- 注意
- 该接口发送的消息默认会推送(前提是在 V2TIMOfflinePushManager 开启了推送),如果需要自定义推送(标题和内容),请调用 V2TIMMessageManager.sendMessage 接口。
◆ sendGroupCustomMessage()
3.6 发送群聊自定义(信令)消息(最大支持 8KB)
- 参数
-
priority | 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
- V2TIMMessage.V2TIM_PRIORITY_HIGH:云端会优先传输,适用于在群里发送重要信令,比如连麦邀请,PK邀请、礼物赠送等关键性信令。
- V2TIMMessage.V2TIM_PRIORITY_NORMAL:云端按默认优先级传输,适用于在群里发送非重要信令,比如观众的点赞提醒等等。
|
- 返回
- 返回消息的唯一标识 ID
- 注意
- 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMMessageManager.sendMessage 接口。
◆ setGroupListener()
◆ createGroup()
abstract void createGroup |
( |
String |
groupType, |
|
|
String |
groupID, |
|
|
String |
groupName, |
|
|
V2TIMValueCallback< String > |
callback |
|
) |
| |
|
abstract |
4.2 创建群组
- 参数
-
groupType | 群类型,我们为您预定义好了四种常用的群类型,您也可以在控制台定义自己需要的群类型:
- "Work" :工作群,成员上限 200 人,不支持由用户主动加入,需要他人邀请入群,适合用于类似微信中随意组建的工作群(对应老版本的 Private 群)。
- "Public" :公开群,成员上限 2000 人,任何人都可以申请加群,但加群需群主或管理员审批,适合用于类似 QQ 中由群主管理的兴趣群。
- "Meeting" :会议群,成员上限 6000 人,任何人都可以自由进出,且加群无需被审批,适合用于视频会议和在线培训等场景(对应老版本的 ChatRoom 群)。
- "AVChatRoom" :直播群,人数无上限,任何人都可以自由进出,消息吞吐量大,适合用作直播场景中的高并发弹幕聊天室。
|
groupID | 自定义群组 ID,可以传 null。传 null 时系统会自动分配 groupID,并通过 callback 返回。 |
groupName | 群名称,不能为 null。 |
- 注意
- 请注意如下特殊逻辑:
- 不支持在同一个 SDKAPPID 下创建两个相同 groupID 的群
◆ joinGroup()
abstract void joinGroup |
( |
String |
groupID, |
|
|
String |
message, |
|
|
V2TIMCallback |
callback |
|
) |
| |
|
abstract |
4.3 加入群组
- 注意
- 请注意如下特殊逻辑:
- 工作群(Work):不能主动入群,只能通过群成员调用 V2TIMManager.getGroupManager().inviteUserToGroup() 接口邀请入群。
- 公开群(Public):申请入群后,需要管理员审批,管理员在收到 V2TIMGroupListener -> onReceiveJoinApplication 回调后调用 V2TIMManager.getGroupManager().getGroupApplicationList() 接口处理加群请求。
- 其他群:可以直接入群。
◆ quitGroup()
abstract void quitGroup |
( |
String |
groupID, |
|
|
final V2TIMCallback |
callback |
|
) |
| |
|
abstract |
4.4 退出群组
- 注意
- 在公开群(Public)、会议(Meeting)和直播群(AVChatRoom)中,群主是不可以退群的,群主只能调用 dismissGroup 解散群组。
◆ dismissGroup()
abstract void dismissGroup |
( |
String |
groupID, |
|
|
final V2TIMCallback |
callback |
|
) |
| |
|
abstract |
4.5 解散群组
- 注意
- 请注意如下特殊逻辑:
- Work:任何人都无法解散群组。
- 其他群:群主可以解散群组。
◆ getUsersInfo()
5.1 获取用户资料
- 注意
- 请注意:
- 获取自己的资料,传入自己的 ID 即可。
- userIDList 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
◆ setSelfInfo()
◆ getMessageManager()
◆ getGroupManager()
◆ getConversationManager()
◆ getFriendshipManager()
◆ getOfflinePushManager()
◆ getSignalingManager()
◆ V2TIM_STATUS_LOGINED
final int V2TIM_STATUS_LOGINED = 1 |
|
static |
已登录
◆ V2TIM_STATUS_LOGINING
final int V2TIM_STATUS_LOGINING = 2 |
|
static |
登录中
◆ V2TIM_STATUS_LOGOUT
final int V2TIM_STATUS_LOGOUT = 3 |
|
static |
无登录
◆ GROUP_TYPE_WORK
final String GROUP_TYPE_WORK = "Work" |
|
static |
工作群
◆ GROUP_TYPE_PUBLIC
final String GROUP_TYPE_PUBLIC = "Public" |
|
static |
公开群
◆ GROUP_TYPE_MEETING
final String GROUP_TYPE_MEETING = "Meeting" |
|
static |
会议群
◆ GROUP_TYPE_AVCHATROOM
final String GROUP_TYPE_AVCHATROOM = "AVChatRoom" |
|
static |
直播群