IMSDK
即时通信 IM 提供全球接入、单聊、群聊、消息推送、资料关系链托管、账号鉴权等全方位解决方案,并提供完备的 App 接入、后台管理接口。
V2TIMManager

构造函数

(BOOL) - initSDK:config:
 
(void) - addIMSDKListener:
 
(void) - removeIMSDKListener:
 
(void) - unInitSDK
 
(NSString *) - getVersion
 
(uint64_t) - getServerTime
 
(BOOL) - initSDK:config:listener:
 
(void) - login:userSig:succ:fail:
 
(void) - logout:fail:
 
(NSString *) - getLoginUser
 
(V2TIMLoginStatus- getLoginStatus
 
(void) - addSimpleMsgListener:
 
(void) - removeSimpleMsgListener:
 
(NSString *) - sendC2CTextMessage:to:succ:fail:
 
(NSString *) - sendC2CCustomMessage:to:succ:fail:
 
(NSString *) - sendGroupTextMessage:to:priority:succ:fail:
 
(NSString *) - sendGroupCustomMessage:to:priority:succ:fail:
 
(void) - addGroupListener:
 
(void) - removeGroupListener:
 
(void) - createGroup:groupID:groupName:succ:fail:
 
(void) - joinGroup:msg:succ:fail:
 
(void) - quitGroup:succ:fail:
 
(void) - dismissGroup:succ:fail:
 
(void) - setGroupListener:
 
(void) - getUsersInfo:succ:fail:
 
(void) - setSelfInfo:succ:fail:
 
(void) - subscribeUserInfo:succ:fail:
 
(void) - unsubscribeUserInfo:succ:fail:
 
(void) - getUserStatus:succ:fail:
 
(void) - setSelfStatus:succ:fail:
 
(void) - subscribeUserStatus:succ:fail:
 
(void) - unsubscribeUserStatus:succ:fail:
 
(void) - callExperimentalAPI:param:succ:fail:
 

类方法

(V2TIMManager *) + sharedInstance
 

成员类型定义说明

◆ V2TIMSucc

- (typedef void(^ V2TIMSucc) (void))
protected

成功通用回调

◆ V2TIMFail

- (typedef void(^ V2TIMFail) (int code, NSString *desc))
protected

失败通用回调

◆ V2TIMCreateGroupSucc

- (typedef void(^ V2TIMCreateGroupSucc) (NSString *groupID))
protected

创建群组成功回调

◆ V2TIMUserFullInfoListSucc

- (typedef void(^ V2TIMUserFullInfoListSucc) (NSArray< V2TIMUserFullInfo * > *infoList))
protected

获取用户资料成功回调

◆ V2TIMCallExperimentalAPISucc

- (typedef void(^ V2TIMCallExperimentalAPISucc) (NSObject *result))
protected

实验性 API 接口成功回调

◆ V2TIMUserStatusListSucc

- (typedef void(^ V2TIMUserStatusListSucc) (NSArray< V2TIMUserStatus * > *result))
protected

获取用户状态列表成功回调

◆ V2TIMLogListener

- (typedef void(^ V2TIMLogListener) (V2TIMLogLevel logLevel, NSString *logContent))
protected

日志回调

成员枚举类型说明

◆ V2TIMLoginStatus

- (enum V2TIMLoginStatus) :
protected

登录状态

枚举值
V2TIM_STATUS_LOGINED 

已登录

V2TIM_STATUS_LOGINING 

登录中

V2TIM_STATUS_LOGOUT 

无登录

◆ V2TIMLogLevel

- (enum V2TIMLogLevel) :
protected

日志级别

枚举值
V2TIM_LOG_NONE 

不输出任何 sdk log

V2TIM_LOG_DEBUG 

输出 DEBUG,INFO,WARNING,ERROR 级别的 log

V2TIM_LOG_INFO 

输出 INFO,WARNING,ERROR 级别的 log

V2TIM_LOG_WARN 

输出 WARNING,ERROR 级别的 log

V2TIM_LOG_ERROR 

输出 ERROR 级别的 log

◆ V2TIMMessagePriority

- (enum V2TIMMessagePriority) :
protected

消息优先级

枚举值
V2TIM_PRIORITY_DEFAULT 

默认

V2TIM_PRIORITY_HIGH 

高优先级,一般用于礼物等重要消息

V2TIM_PRIORITY_NORMAL 

常规优先级,一般用于普通消息

V2TIM_PRIORITY_LOW 

低优先级,一般用于点赞消息

◆ V2TIMGender

- (enum V2TIMGender) :
protected

性别

枚举值
V2TIM_GENDER_UNKNOWN 

未知性别

V2TIM_GENDER_MALE 

男性

V2TIM_GENDER_FEMALE 

女性

◆ V2TIMFriendAllowType

- (enum V2TIMFriendAllowType) :
protected

好友验证方式

枚举值
V2TIM_FRIEND_ALLOW_ANY 

同意任何用户加好友

V2TIM_FRIEND_NEED_CONFIRM 

需要验证

V2TIM_FRIEND_DENY_ANY 

拒绝任何人加好友

◆ V2TIMGroupMemberRole

- (enum V2TIMGroupMemberRole) :
protected

群成员角色

枚举值
V2TIM_GROUP_MEMBER_UNDEFINED 

未定义(没有获取该字段)

V2TIM_GROUP_MEMBER_ROLE_MEMBER 

群成员

V2TIM_GROUP_MEMBER_ROLE_ADMIN 

群管理员

V2TIM_GROUP_MEMBER_ROLE_SUPER 

群主

◆ V2TIMUserStatusType

- (enum V2TIMUserStatusType) :
protected

用户状态类型

枚举值
V2TIM_USER_STATUS_UNKNOWN 

未知状态

V2TIM_USER_STATUS_ONLINE 

在线状态

V2TIM_USER_STATUS_OFFLINE 

离线状态

V2TIM_USER_STATUS_UNLOGINED 

未登录(如主动调用 logout 接口,或者账号注册后还未登录)

函数文档

◆ sharedInstance()

+ (V2TIMManager*) sharedInstance

1.1 获取 V2TIMManager 管理器实例

◆ initSDK:config:()

- (BOOL) initSDK: (int)  sdkAppID
config: (V2TIMSDKConfig *)  config 

1.2 初始化 SDK

参数
sdkAppID应用 ID,必填项,可以在 控制台 中获取
config配置信息
返回
YES:成功;NO:失败

◆ addIMSDKListener:()

- (void) addIMSDKListener: (id< V2TIMSDKListener >)  listener

1.3 添加 IM 监听

◆ removeIMSDKListener:()

- (void) removeIMSDKListener: (id< V2TIMSDKListener >)  listener

1.4 移除 IM 监听

◆ unInitSDK()

- (void) unInitSDK

1.5 反初始化 SDK

◆ getVersion()

- (NSString*) getVersion

1.6 获取版本号

返回
返回版本号,字符串表示,例如 5.0.10

◆ getServerTime()

- (uint64_t) getServerTime

1.7 获取服务器时间戳

返回
UTC 时间戳,单位 s

◆ initSDK:config:listener:()

- (BOOL) initSDK: (int)  sdkAppID
config: (V2TIMSDKConfig *)  config
listener: (id< V2TIMSDKListener >)  listener 

初始化 SDK(待废弃接口,请使用 initSDK 和 addIMSDKListener 接口)

◆ login:userSig:succ:fail:()

- (void) login: (NSString *)  userID
userSig: (NSString *)  userSig
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

2.1 登录

登录需要设置用户名 userID 和用户签名 userSig,userSig 生成请参考 UserSig 后台 API

注意
请注意如下特殊逻辑:
  • 登陆时票据过期:login 函数的 V2TIMFail 会返回 ERR_USER_SIG_EXPIRED(6206)或者 ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001) 错误码,此时请您生成新的 userSig 重新登录。
  • 在线时票据过期:用户在线期间也可能收到 V2TIMSDKListener -> onUserSigExpired 回调,此时也是需要您生成新的 userSig 并重新登录。
  • 在线时被踢下线:用户在线情况下被踢,SDK 会通过 V2TIMSDKListener -> onKickedOffline 回调通知给您,此时可以 UI 提示用户,并再次调用 login() 重新登录。
  • 同平台多设备在线:该功能为IM旗舰版功能,购买旗舰版套餐包后可使用,详见价格说明

◆ logout:fail:()

- (void) logout: (V2TIMSucc succ
fail: (V2TIMFail fail 

2.2 登出

退出登录,如果切换账号,需要 logout 回调成功或者失败后才能再次 login,否则 login 可能会失败。

◆ getLoginUser()

- (NSString *) getLoginUser

2.3 获取登录用户

◆ getLoginStatus()

- (V2TIMLoginStatus) getLoginStatus

2.4 获取登录状态

如果用户已经处于已登录和登录中状态,请勿再频繁调用登录接口登录。

◆ addSimpleMsgListener:()

- (void) addSimpleMsgListener: (addSimpleMsgListener(listener:))  NS_SWIFT_NAME

3.1 设置基本消息(文本消息和自定义消息)的事件监听器

注意
图片消息、视频消息、语音消息等高级消息的监听,请参考 V2TIMManager+Message.h -> addAdvancedMsgListener 接口。

◆ removeSimpleMsgListener:()

- (void) removeSimpleMsgListener: (removeSimpleMsgListener(listener:))  NS_SWIFT_NAME

3.2 移除基本消息(文本消息和自定义消息)的事件监听器

◆ sendC2CTextMessage:to:succ:fail:()

- (NSString*) sendC2CTextMessage: (NSString *)  text
to: (NSString *)  userID
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

3.3 发送单聊普通文本消息(最大支持 12KB)

文本消息支持云端的脏词过滤,如果用户发送的消息中有敏感词,V2TIMFail 回调将会返回 80001 错误码。

返回
返回消息的唯一标识 ID
注意
该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。

◆ sendC2CCustomMessage:to:succ:fail:()

- (NSString*) sendC2CCustomMessage: (NSData *)  customData
to: (NSString *)  userID
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

3.4 发送单聊自定义(信令)消息(最大支持 12KB)

自定义消息本质就是一端二进制 buffer,您可以在其上自由组织自己的消息格式(常用于发送信令),但是自定义消息不支持云端敏感词过滤。

返回
返回消息的唯一标识 ID
注意
该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。

◆ sendGroupTextMessage:to:priority:succ:fail:()

- (NSString*) sendGroupTextMessage: (NSString *)  text
to: (NSString *)  groupID
priority: (V2TIMMessagePriority priority
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

3.5 发送群聊普通文本消息(最大支持 12KB)

参数
priority设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
  • HIGH :云端会优先传输,适用于在群里发送重要消息,比如主播发送的文本消息等。
  • NORMAL :云端按默认优先级传输,适用于在群里发送普通消息,比如观众发送的弹幕消息等。
返回
返回消息的唯一标识 ID
注意
该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。

◆ sendGroupCustomMessage:to:priority:succ:fail:()

- (NSString*) sendGroupCustomMessage: (NSData *)  customData
to: (NSString *)  groupID
priority: (V2TIMMessagePriority priority
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

3.6 发送群聊自定义(信令)消息(最大支持 12KB)

参数
priority设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
  • HIGH :云端会优先传输,适用于在群里发送重要信令,比如连麦邀请,PK邀请、礼物赠送等关键性信令。
  • NORMAL :云端按默认优先级传输,适用于在群里发送非重要信令,比如观众的点赞提醒等等。
返回
返回消息的唯一标识 ID
注意
该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。

◆ addGroupListener:()

- (void) addGroupListener: (addGroupListener(listener:))  NS_SWIFT_NAME

4.1 设置群组监听器

◆ removeGroupListener:()

- (void) removeGroupListener: (removeGroupListener(listener:))  NS_SWIFT_NAME

4.2 设置群组监听器

◆ createGroup:groupID:groupName:succ:fail:()

- (void) createGroup: (NSString *)  groupType
groupID: (NSString *)  groupID
groupName: (NSString *)  groupName
succ: (V2TIMCreateGroupSucc succ
fail: (V2TIMFail fail 

4.3 创建群组

参数
groupType群类型,我们为您预定义好了几种常用的群类型,您也可以在控制台定义自己需要的群类型:
  • "Work" :工作群,成员上限 200 人,不支持由用户主动加入,需要他人邀请入群,适合用于类似微信中随意组建的工作群(对应老版本的 Private 群)。
  • "Public" :公开群,成员上限 2000 人,任何人都可以申请加群,但加群需群主或管理员审批,适合用于类似 QQ 中由群主管理的兴趣群。
  • "Meeting" :会议群,成员上限 6000 人,任何人都可以自由进出,且加群无需被审批,适合用于视频会议和在线培训等场景(对应老版本的 ChatRoom 群)。
  • "Community" :社群,成员上限 100000 人,任何人都可以自由进出,且加群无需被审批,适合用于知识分享和游戏交流等超大社区群聊场景。5.8 版本开始支持,需要您购买旗舰版套餐。
  • "AVChatRoom" :直播群,人数无上限,任何人都可以自由进出,消息吞吐量大,适合用作直播场景中的高并发弹幕聊天室。
groupID自定义群组 ID,可以传 nil。传 nil 时系统会自动分配 groupID,并通过 succ 回调返回。 "Community" 类型自定义群组 ID 必须以 "@TGS#_" 作为前缀。
groupName群名称,不能为 nil,最长 100 字节,使用 UTF-8 编码,1 个汉字占 3 个字节。
注意
请注意如下特殊逻辑:
  • 不支持在同一个 SDKAPPID 下创建两个相同 groupID 的群。
  • 社群(Community)功能仅 5.8.1668 增强版及以上版本支持,需购买旗舰版套餐包申请开通后方可使用。
  • 直播群(AVChatRoom):在进程重启或重新登录之后,如果想继续接收直播群的消息,请您调用 joinGroup 重新加入直播群。

◆ joinGroup:msg:succ:fail:()

- (void) joinGroup: (NSString *)  groupID
msg: (NSString *)  msg
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

4.4 加入群组

注意
请注意如下特殊逻辑:
  • 工作群(Work):不能主动入群,只能通过群成员调用 V2TIMManager+Group.h -> inviteUserToGroup 接口邀请入群。
  • 公开群(Public):申请入群后,需要管理员审批,管理员在收到 V2TIMGroupListener -> onReceiveJoinApplication 回调后调用 V2TIMManager+Group.h -> getGroupApplicationList 接口处理加群请求。
  • 其他群:可以直接入群。
  • 直播群(AVChatRoom):在进程重启或重新登录之后,如果想继续接收直播群的消息,请您调用 joinGroup 重新加入直播群。
  • 直播群(AVChatRoom):直播群新成员可以查看入群前消息,该功能为 IM 旗舰版功能,购买旗舰版套餐包后可使用,详见价格说明

◆ quitGroup:succ:fail:()

- (void) quitGroup: (NSString *)  groupID
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

4.5 退出群组

注意
在公开群(Public)、会议(Meeting)和直播群(AVChatRoom)中,群主是不可以退群的,群主只能调用 dismissGroup 解散群组。

◆ dismissGroup:succ:fail:()

- (void) dismissGroup: (NSString *)  groupID
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

4.6 解散群组

注意
请注意如下特殊逻辑:
  • 好友工作群(Work)的解散最为严格,即使群主也不能随意解散,只能由您的业务服务器调用 解散群组 REST API 解散。
  • 其他类型群的群主可以解散群组。

◆ setGroupListener:()

- (void) setGroupListener: (id< V2TIMGroupListener >)  listener

设置群组监听器(待废弃接口,请使用 addGroupListener 和 removeGroupListener 接口)

◆ getUsersInfo:succ:fail:()

- (void) getUsersInfo: (NSArray< NSString * > *)  userIDList
succ: (V2TIMUserFullInfoListSucc succ
fail: (V2TIMFail fail 

5.1 获取用户资料

注意
  • 获取自己的资料,传入自己的 ID 即可。
  • userIDList 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。

◆ setSelfInfo:succ:fail:()

- (void) setSelfInfo: (V2TIMUserFullInfo *)  Info
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

5.2 修改个人资料

◆ subscribeUserInfo:succ:fail:()

- (void) subscribeUserInfo: (NSArray *)  userIDList
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

5.3 订阅用户资料,从 7.4 版本开始支持

参数
userIDList待订阅的用户 ID
注意
  • 该接口用于订阅陌生人的资料变更事件,订阅成功后,当订阅用户资料发生变更,您可以通过监听 onUserInfoChanged 回调来感知
  • 订阅列表最多允许订阅 200 个,超过限制后,会自动淘汰最先订阅的用户
  • 自己的资料变更通知不需要订阅,默认会通过 onSelfInfoUpdated 回调通知给您
  • 好友的资料变更通知不需要订阅,默认会通过 onFriendInfoChange 回调通知给您
  • 该功能为 IM 旗舰版功能,购买旗舰版套餐包后可使用,详见价格说明

◆ unsubscribeUserInfo:succ:fail:()

- (void) unsubscribeUserInfo: (NSArray *)  userIDList
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

5.4 取消订阅用户资料,从 7.4 版本开始支持

参数
userIDList需要取消订阅的用户 ID
注意

◆ getUserStatus:succ:fail:()

- (void) getUserStatus: (NSArray *)  userIDList
succ: (V2TIMUserStatusListSucc succ
fail: (V2TIMFail fail 

5.5 查询用户状态,从 6.3 版本开始支持

参数
userIDList需要获取的用户 ID
注意
  • 如果您想查询自己的自定义状态,您只需要传入自己的 userID 即可
  • 当您批量查询时,接口只会返回查询成功的用户状态信息;当所有用户均查询失败时,接口会报错
  • 查询其他用户状态为 IM 旗舰版功能,购买旗舰版套餐包后可使用,详见价格说明

◆ setSelfStatus:succ:fail:()

- (void) setSelfStatus: (V2TIMUserStatus *)  status
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

5.6 设置自己的状态,从 6.3 版本开始支持

参数
status待设置的自定义状态
注意
该接口只支持设置自己的自定义状态,即 V2TIMUserStatus.customStatus

◆ subscribeUserStatus:succ:fail:()

- (void) subscribeUserStatus: (NSArray *)  userIDList
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

5.7 订阅用户状态,从 6.3 版本开始支持

参数
userIDList待订阅的用户 ID
注意
  • 当成功订阅用户状态后,当对方的状态(包含在线状态、自定义状态)发生变更后,您可以监听 @onUserStatusChanged 回调来感知
  • 如果您需要订阅好友列表的状态,您只需要在控制台上打开开关即可,无需调用该接口
  • 该接口不支持订阅自己,您可以通过监听 @onUserStatusChanged 回调来感知自身的自定义状态的变更
  • 订阅列表最多允许订阅 200 个,超过限制后,会自动淘汰最先订阅的用户
  • 该功能为 IM 旗舰版功能,购买旗舰版套餐包后可使用,详见价格说明

◆ unsubscribeUserStatus:succ:fail:()

- (void) unsubscribeUserStatus: (NSArray *)  userIDList
succ: (V2TIMSucc succ
fail: (V2TIMFail fail 

5.8 取消订阅用户状态,从 6.3 版本开始支持

注意

◆ callExperimentalAPI:param:succ:fail:()

- (void) callExperimentalAPI: (NSString *)  api
param: (NSObject *)  param
succ: (V2TIMCallExperimentalAPISucc succ
fail: (V2TIMFail fail 

6.1 实验性 API 接口

参数
api接口名称
param接口参数
注意
该接口提供一些实验性功能