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

构造函数

(void) - addAdvancedMsgListener:
 
(void) - removeAdvancedMsgListener:
 
(V2TIMMessage *) - createTextMessage:
 
(V2TIMMessage *) - createCustomMessage:
 
(V2TIMMessage *) - createImageMessage:
 
(V2TIMMessage *) - createSoundMessage:duration:
 
(V2TIMMessage *) - createVideoMessage:type:duration:snapshotPath:
 
(V2TIMMessage *) - createFileMessage:fileName:
 
(V2TIMMessage *) - createLocationMessage:longitude:latitude:
 
(V2TIMMessage *) - createFaceMessage:data:
 
(NSString *) - sendMessage:receiver:groupID:priority:onlineUserOnly:offlinePushInfo:progress:succ:fail:
 
(void) - getC2CHistoryMessageList:count:lastMsg:succ:fail:
 
(void) - getGroupHistoryMessageList:count:lastMsg:succ:fail:
 
(void) - revokeMessage:succ:fail:
 
(void) - markC2CMessageAsRead:succ:fail:
 
(void) - markGroupMessageAsRead:succ:fail:
 
(void) - deleteMessageFromLocalStorage:succ:fail:
 
(NSString *) - insertGroupMessageToLocalStorage:to:sender:succ:fail:
 

成员类型定义说明

◆ V2TIMMessageListSucc

- (typedef void(^ V2TIMMessageListSucc) (NSArray< V2TIMMessage * > *msgs))
protected

获取历史消息成功回调

◆ V2TIMProgress

- (typedef void(^ V2TIMProgress) (uint32_t progress))
protected

文件上传进度回调,取值 0 -100

◆ V2TIMDownLoadProgress

- (typedef void(^ V2TIMDownLoadProgress) (NSInteger curSize, NSInteger totalSize))
protected

文件下载进度回调

成员枚举类型说明

◆ V2TIMMessageStatus

- (enum V2TIMMessageStatus) :
protected
枚举值
V2TIM_MSG_STATUS_SENDING 

消息发送中

V2TIM_MSG_STATUS_SEND_SUCC 

消息发送成功

V2TIM_MSG_STATUS_SEND_FAIL 

消息发送失败

V2TIM_MSG_STATUS_HAS_DELETED 

消息被删除

V2TIM_MSG_STATUS_LOCAL_REVOKED 

被撤销的消息

◆ V2TIMElemType

- (enum V2TIMElemType) :
protected
枚举值
V2TIM_ELEM_TYPE_NONE 

未知消息

V2TIM_ELEM_TYPE_TEXT 

文本消息

V2TIM_ELEM_TYPE_CUSTOM 

自定义消息

V2TIM_ELEM_TYPE_IMAGE 

图片消息

V2TIM_ELEM_TYPE_SOUND 

语音消息

V2TIM_ELEM_TYPE_VIDEO 

视频消息

V2TIM_ELEM_TYPE_FILE 

文件消息

V2TIM_ELEM_TYPE_LOCATION 

地理位置消息

V2TIM_ELEM_TYPE_FACE 

表情消息

V2TIM_ELEM_TYPE_GROUP_TIPS 

群 Tips 消息

◆ V2TIMOfflinePushFlag

- (enum V2TIMOfflinePushFlag) :
protected

推送规则

枚举值
V2TIM_OFFLINE_PUSH_DEFAULT 

按照默认规则进行推送

V2TIM_OFFLINE_PUSH_NO_PUSH 

不进行推送

◆ V2TIMImageType

- (enum V2TIMImageType) :
protected

图片类型

枚举值
V2TIM_IMAGE_TYPE_ORIGIN 

原图

V2TIM_IMAGE_TYPE_THUMB 

缩略图

V2TIM_IMAGE_TYPE_LARGE 

大图

◆ V2TIMGroupTipsType

- (enum V2TIMGroupTipsType) :
protected

群 Tips 类型

枚举值
V2TIM_GROUP_TIPS_TYPE_JOIN 

主动入群(memberList 加入群组,非 Work 群有效)

V2TIM_GROUP_TIPS_TYPE_INVITE 

被邀请入群(opMember 邀请 memberList 入群,Work 群有效)

V2TIM_GROUP_TIPS_TYPE_QUIT 

退出群 (opMember 退出群组)

V2TIM_GROUP_TIPS_TYPE_KICKED 

踢出群 (opMember 把 memberList 踢出群组)

V2TIM_GROUP_TIPS_TYPE_SET_ADMIN 

设置管理员 (opMember 把 memberList 设置为管理员)

V2TIM_GROUP_TIPS_TYPE_CANCEL_ADMIN 

取消管理员 (opMember 取消 memberList 管理员身份)

V2TIM_GROUP_TIPS_TYPE_GROUP_INFO_CHANGE 

群资料变更 (opMember 修改群资料: groupName & introduction & notification & faceUrl & owner & custom)

V2TIM_GROUP_TIPS_TYPE_MEMBER_INFO_CHANGE 

群成员资料变更 (opMember 修改群成员资料:muteTime)

◆ V2TIMGroupInfoChangeType

- (enum V2TIMGroupInfoChangeType) :
protected

群变更信息 Tips 类型

枚举值
V2TIM_GROUP_INFO_CHANGE_TYPE_NAME 

群名修改

V2TIM_GROUP_INFO_CHANGE_TYPE_INTRODUCTION 

群简介修改

V2TIM_GROUP_INFO_CHANGE_TYPE_NOTIFICATION 

群公告修改

V2TIM_GROUP_INFO_CHANGE_TYPE_FACE 

群头像修改

V2TIM_GROUP_INFO_CHANGE_TYPE_OWNER 

群主变更

V2TIM_GROUP_INFO_CHANGE_TYPE_CUSTOM 

群自定义字段变更

函数文档

◆ addAdvancedMsgListener:()

- (void) addAdvancedMsgListener: (id< V2TIMAdvancedMsgListener >)  listener

1.1 添加高级消息的事件监听器

◆ removeAdvancedMsgListener:()

- (void) removeAdvancedMsgListener: (id< V2TIMAdvancedMsgListener >)  listener

1.2 移除高级消息的事件监听器

◆ createTextMessage:()

- (V2TIMMessage *) createTextMessage: (NSString *)  text

2.1 创建文本消息

◆ createCustomMessage:()

- (V2TIMMessage *) createCustomMessage: (NSData *)  data

2.2 创建自定义消息

◆ createImageMessage:()

- (V2TIMMessage *) createImageMessage: (NSString *)  imagePath

2.3 创建图片消息(图片文件最大支持 28 MB)

注意
如果是系统相册拿的图片,需要先把图片导入 APP 的目录下,具体请参考 Demo TUIChatController -> imagePickerController 代码示例

◆ createSoundMessage:duration:()

- (V2TIMMessage *) createSoundMessage: (NSString *)  audioFilePath
duration: (int)  duration 

2.4 创建语音消息(语音文件最大支持 28 MB)

参数
duration音频时长,单位 s

◆ createVideoMessage:type:duration:snapshotPath:()

- (V2TIMMessage *) createVideoMessage: (NSString *)  videoFilePath
type: (NSString *)  type
duration: (int)  duration
snapshotPath: (NSString *)  snapshotPath 

2.5 创建视频消息(视频文件最大支持 100 MB)

参数
type视频类型,如 mp4 mov 等
duration视频时长,单位 s
snapshotPath视频封面文件路径
注意
如果是系统相册拿的视频,需要先把视频导入 APP 的目录下,具体请参考 Demo TUIChatController -> imagePickerController 代码示例

◆ createFileMessage:fileName:()

- (V2TIMMessage *) createFileMessage: (NSString *)  filePath
fileName: (NSString *)  fileName 

2.6 创建文件消息(文件最大支持 100 MB)

◆ createLocationMessage:longitude:latitude:()

- (V2TIMMessage *) createLocationMessage: (NSString *)  desc
longitude: (double)  longitude
latitude: (double)  latitude 

2.7 创建地理位置消息

◆ createFaceMessage:data:()

- (V2TIMMessage *) createFaceMessage: (int)  index
data: (NSData *)  data 

2.8 创建表情消息

SDK 并不提供表情包,如果开发者有表情包,可使用 index 存储表情在表情包中的索引,或者使用 data 存储表情映射的字符串 key,这些都由用户自定义,SDK 内部只做透传。

参数
index表情索引
data自定义数据

◆ sendMessage:receiver:groupID:priority:onlineUserOnly:offlinePushInfo:progress:succ:fail:()

- (NSString *) sendMessage: (V2TIMMessage *)  message
receiver: (NSString *)  receiver
groupID: (NSString *)  groupID
priority: (V2TIMMessagePriority)  priority
onlineUserOnly: (BOOL)  onlineUserOnly
offlinePushInfo: (V2TIMOfflinePushInfo *)  offlinePushInfo
progress: (V2TIMProgress progress
succ: (V2TIMSucc)  succ
fail: (V2TIMFail)  fail 

3.1 发送高级消息(高级版本:可以指定优先级,推送信息等特性)

参数
message待发送的消息对象,需要通过对应的 createXXXMessage 接口进行创建。
receiver消息接收者的 userID, 如果是发送 C2C 单聊消息,只需要指定 receiver 即可。
groupID目标群组 ID,如果是发送群聊消息,只需要指定 groupID 即可。
priority消息优先级,仅针对群聊消息有效。请把重要消息设置为高优先级(比如红包、礼物消息),高频且不重要的消息设置为低优先级(比如点赞消息)。
onlineUserOnly是否只有在线用户才能收到,如果设置为 YES ,接收方历史消息拉取不到,常被用于实现”对方正在输入”或群组里的非重要提示等弱提示功能。
offlinePushInfo苹果 APNS 离线推送时携带的标题和声音。
progress文件上传进度(当发送消息中包含图片、语音、视频、文件等富媒体消息时才有效)。
返回
msgID 消息唯一标识
注意
  • 如果需要消息离线推送,请先在 V2TIMManager+APNS.h 开启推送,推送开启后,除了自定义消息,其他消息默认都会推送。
  • 如果自定义消息也需要推送,请设置 offlinePushInfo 的 desc 字段,设置成功后,推送的时候会默认展示 desc 信息。

◆ getC2CHistoryMessageList:count:lastMsg:succ:fail:()

- (void) getC2CHistoryMessageList: (NSString *)  userID
count: (int)  count
lastMsg: (V2TIMMessage *)  lastMsg
succ: (V2TIMMessageListSucc succ
fail: (V2TIMFail)  fail 

4.1 获取单聊历史消息

参数
count拉取消息的个数,不宜太多,会影响消息拉取的速度,这里建议一次拉取 20 个
lastMsg获取消息的起始消息,如果传 nil,起始消息为会话的最新消息
注意
如果 SDK 检测到没有网络,默认会直接返回本地数据

◆ getGroupHistoryMessageList:count:lastMsg:succ:fail:()

- (void) getGroupHistoryMessageList: (NSString *)  groupID
count: (int)  count
lastMsg: (V2TIMMessage *)  lastMsg
succ: (V2TIMMessageListSucc succ
fail: (V2TIMFail)  fail 

4.2 获取群组历史消息

参数
count拉取消息的个数,不宜太多,会影响消息拉取的速度,这里建议一次拉取 20 个
lastMsg获取消息的起始消息,如果传 nil,起始消息为会话的最新消息
注意
请注意:
  • 如果 SDK 检测到没有网络,默认会直接返回本地数据
  • 只有会议群(Meeting)才能拉取到进群前的历史消息,直播群(AVChatRoom)消息不存漫游和本地数据库,调用这个接口无效

◆ revokeMessage:succ:fail:()

- (void) revokeMessage: (V2TIMMessage *)  msg
succ: (V2TIMSucc)  succ
fail: (V2TIMFail)  fail 

4.3 撤回消息

注意
请注意:
  • 撤回消息的时间限制默认 2 minutes,超过 2 minutes 的消息不能撤回,您也可以在 控制台(功能配置 -> 登录与消息 -> 消息撤回设置)自定义撤回时间限制。
  • 如果发送方撤回消息,已经收到消息的一方会收到 V2TIMAdvancedMsgListener -> onRecvMessageRevoked 回调。

◆ markC2CMessageAsRead:succ:fail:()

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

4.4 设置单聊消息已读

◆ markGroupMessageAsRead:succ:fail:()

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

4.5 设置群组消息已读

◆ deleteMessageFromLocalStorage:succ:fail:()

- (void) deleteMessageFromLocalStorage: (V2TIMMessage *)  msg
succ: (V2TIMSucc)  succ
fail: (V2TIMFail)  fail 

4.6 删除本地消息

注意
消息只能本地删除,消息删除后,SDK 会在本地把这条消息标记为已删除状态,getHistoryMessage 不能再拉取到,如果程序卸载重装,本地会失去对这条消息的删除标记,getHistoryMessage 还能再拉取到该条消息。

◆ insertGroupMessageToLocalStorage:to:sender:succ:fail:()

- (NSString *) insertGroupMessageToLocalStorage: (V2TIMMessage *)  msg
to: (NSString *)  groupID
sender: (NSString *)  sender
succ: (V2TIMSucc)  succ
fail: (V2TIMFail)  fail 

4.7 向群组消息列表中添加一条消息

该接口主要用于满足向群组聊天会话中插入一些提示性消息的需求,比如“您已经退出该群”,这类消息有展示 在聊天消息区的需求,但并没有发送给其他人的必要。 所以 insertGroupMessageToLocalStorage() 相当于一个被禁用了网络发送能力的 sendMessage() 接口。

返回
msgID 消息唯一标识
注意
通过该接口 save 的消息只存本地,程序卸载后会丢失。