TIMConversation Class Reference
Inherits from | NSObject |
---|---|
Declared in | TIMConversation.h |
发消息相关接口
– sendMessage:succ:fail:
1.1 发送消息
- (int)sendMessage:(TIMMessage *)msg succ:(TIMSucc)succ fail:(TIMFail)fail
Parameters
msg |
消息体 |
---|---|
succ |
发送成功时回调 |
fail |
发送失败时回调 |
Return Value
0:操作成功;1:操作失败
Discussion
TIMMessage 由多个 TIMElem 组成,一个 TIMElem 可以是一串文本,也可以是一张图片。 虽然说每一条消息都可以包含多个 TIMElem,但这个并不常用,通常您只需要在一个 TIMMessage 塞入一个 TIMElem 即可。
详情请参考官网文档 消息收发
Declared In
TIMConversation.h
– sendOnlineMessage:succ:fail:
1.2 发送在线消息(无痕消息)
- (int)sendOnlineMessage:(TIMMessage *)msg succ:(TIMSucc)succ fail:(TIMFail)fail
Parameters
msg |
消息体 |
---|---|
succ |
成功回调 |
fail |
失败回调 |
Return Value
0:操作成功;1:操作失败
Discussion
“在线消息”,也可以称为是“无痕消息”。跟普通消息的区别在于:在线消息不会被云服务存储,也不会存储于本地数据库中。 如果接收者在线,可以收到消息,但如果接收者离线,重新上线后也不能通过 getMessage() 接口从历史消息里查到它们。
该类型消息比较适合用作发送广播通知等不重要的提示消息。
- 在线消息不会被计入未读计数
- 暂不支持在 AVChatRoom 和 BChatRoom 中发送。
Declared In
TIMConversation.h
获取消息相关接口
– getMessage:last:succ:fail:
2.1 从云端拉取历史消息
- (int)getMessage:(int)count last:(TIMMessage *)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail
Parameters
count |
获取数量 |
---|---|
last |
上次最后一条消息,如果 last 为 nil,从最新的消息开始读取 |
succ |
成功时回调 |
fail |
失败时回调 |
Return Value
0:本次操作成功;1:本次操作失败
Discussion
如果用户的网络正常且登录成功,可以通过该接口拉取历史消息,该接口会返回云端存储的历史消息(最多存储7天)。
单聊和群聊消息会在云端免费存储7天,如果希望存储更长时间,可前往 (IM 控制台 -> 功能配置 -> 消息 ->消息漫游时长)进行购买, 具体资费请参考 价格说明。
对于图片、语音等资源类消息,获取到的消息体只会包含描述信息,需要通过额外的接口下载数据, 详情请参考 [消息收发](https://cloud.tencent.com/document/product/269/9150)中的 “消息解析” 部分文档。
Declared In
TIMConversation.h
– getLocalMessage:last:succ:fail:
2.2 从本地数据库中获取历史消息
- (int)getLocalMessage:(int)count last:(TIMMessage *)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail
Parameters
count |
获取数量 |
---|---|
last |
上次最后一条消息 |
succ |
成功时回调 |
fail |
失败时回调 |
Return Value
0:本次操作成功;1:本次操作失败
Discussion
如果客户网络异常或登录失败,可以通过该接口获取本地存储的历史消息,调用方法和 getMessage() 一致
Declared In
TIMConversation.h
– getLastMsg
2.3 获取当前会话的最后一条消息
- (TIMMessage *)getLastMsg
Return Value
最后一条消息
Discussion
可用于“装饰”会话列表,目前大多数 App 的会话列表中都会显示该会话的最后一条消息
Declared In
TIMConversation.h
设置消息已读
– setReadMessage:succ:fail:
3.1 标记消息为已读状态
- (int)setReadMessage:(TIMMessage *)fromMsg succ:(TIMSucc)succ fail:(TIMFail)fail
Parameters
fromMsg |
会话内最近一条已读的消息,nil 表示上报最新消息 |
---|---|
succ |
成功时回调 |
fail |
失败时回调 |
Return Value
0 表示成功
Discussion
该接口会标记当前消息以及之前的所有消息为已读状态,标记消息为已读状态会有两个作用: 1. 已经被标记为已读的消息不会重复提醒,下次登录或者换一台终端设备登录 IM 时,都不会再次收到该消息的未读提醒。 2. 如果发送者通过 TIMUserConfig -> enableReadReceipt 开启了 “被阅回执”,接收者在标记已读状态时,发送者会收到“被阅提醒”。
Note: 该接口尚不支持标记单独一条消息,只能标记一批。即标记当前一条消息,之前的消息也会全被标记为已读状态。
Declared In
TIMConversation.h
– getUnReadMessageNum
3.2 获取会话的未读消息计数
- (int)getUnReadMessageNum
Return Value
返回未读计数
Discussion
- 同一个终端登录,在未卸载 APP 的情况下,您可以通过当前接口获取的未读消息的个数。
- 如果希望换一台终端也能取到同样的未读计数提醒,或者卸载 APP 再重装,未读计数提醒还能保留卸载前的状态, 就需要设置 TIMUserConfig 的 disableAutoReport 为 YES,这样可以开启多终端同步未读提醒。
详情参考 [未读消息计数](https://cloud.tencent.com/document/product/269/9151)
Declared In
TIMConversation.h
撤回/删除消息相关接口
– revokeMessage:succ:fail:
4.1 撤回一条已发送的消息(消息发送后 )
- (int)revokeMessage:(TIMMessage *)msg succ:(TIMSucc)succ fail:(TIMFail)fail
Parameters
msg |
被撤回的消息 |
---|---|
succ |
成功时回调 |
fail |
失败时回调 |
Return Value
0:本次操作成功;1:本次操作失败
Discussion
- 消息撤回的有效时间为2分钟,即消息发出2分钟后不能再撤回。
- 仅支持 C2C 会话和 GROUP 会话中发送的消息,无法撤销 OnlineMessage,也无法撤销 AVChatRoom 和 BChatRoom 中的消息。
- 您需要在 TIMUserConfig -> TIMMessageRevokeListener 监听 onRevokeMessage() 消息撤回回调, 如果消息撤回成功,消息的接收方会收到一次 onRevokeMessage:(TIMMessageLocator*) 回调,TIMMessageLocator 相当于一条消息的定位标志。 您可以在已收到的历史消息里进行遍历,通过 TIMMessage 中的 respondsToLocator() 接口进行比对,以便定位到该条消息。
Declared In
TIMConversation.h
– deleteLocalMessage:fail:
4.2 删除当前会话的本地历史消息
- (int)deleteLocalMessage:(TIMSucc)succ fail:(TIMFail)fail
Parameters
succ |
成功时回调 |
---|---|
fail |
失败时回调 |
Return Value
0 本次操作成功
Declared In
TIMConversation.h
获取会话信息相关接口
– getReceiver
5.2 获取会话 ID
- (NSString *)getReceiver
Return Value
会话人
Discussion
C2C:对方账号;Group:群组Id。
对同一个单聊或则群聊会话,getReceiver 获取的会话 ID 都是固定的,C2C 获取的是对方账号,Group 获取的是群组 Id。
Declared In
TIMConversation.h
– getGroupName
5.3 获取群名称
- (NSString *)getGroupName
Return Value
群名称
Discussion
获取群名称,只有群会话有效。
Declared In
TIMConversation.h
草稿箱
– setDraft:
6.1 添加未编辑完的草稿消息
- (int)setDraft:(TIMMessageDraft *)draft
Parameters
draft |
草稿内容,详情请参考 TIMMessage.h 里面的 TIMMessageDraft 定义 |
---|
Return Value
0:成功;1:失败
Discussion
在发送消息时,常常会遇到尚未编辑完毕就要切换到其它聊天窗口的情况,这些未编辑完的消息就可以通过 setDraft() 接口存储到草稿箱中。 草稿信息会存本地数据库,重新登录后依然可以获取。
Declared In
TIMConversation.h
– getDraft
6.2 获取未编辑完的草稿消息
- (TIMMessageDraft *)getDraft
Return Value
草稿内容,没有草稿返回 nil
Declared In
TIMConversation.h
导入消息到会话相关接口
– saveMessage:sender:isReaded:
7.1 向本地消息列表中添加一条消息,但并不将其发送出去。
- (int)saveMessage:(TIMMessage *)msg sender:(NSString *)sender isReaded:(BOOL)isRead
Parameters
msg |
消息体 |
---|---|
sender |
发送方 |
isRead |
是否已读,如果发送方是自己,默认已读 |
Return Value
0:成功;1:失败
Discussion
该接口主要用于满足向聊天会话中插入一些提示性消息的需求,比如“您已经退出该群”,这类消息有展示 在聊天消息区的需求,但并没有发送给其他人的必要。 所以 saveMessage() 相当于一个被禁用了网络发送能力的 sendMessage() 接口。
Declared In
TIMConversation.h
– importMessages:
7.2 将消息导入本地数据库
- (int)importMessages:(NSArray *)msgs
Parameters
msgs |
消息(TIMMessage*)列表 |
---|
Return Value
0:成功;1:失败
Declared In
TIMConversation.h
MsgExt Methods
– getMessageForward:last:succ:fail:
向前获取会话漫游消息
- (int)getMessageForward:(int)count last:(TIMMessage *)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail
Parameters
count |
获取数量 |
---|---|
last |
上次最后一条消息,如果 last 为 nil,从最新的消息开始读取 |
succ |
成功时回调 |
fail |
失败时回调 |
Return Value
0:本次操作成功;1:本次操作失败
Discussion
调用方式和 getMessage 一样,区别是 getMessage 获取的是时间更老的消息,主要用于下拉 Tableview 刷新消息数据,getMessageForward 获取的是时间更新的消息,主要用于上拉 Tableview 刷新消息数据。
Declared In
TIMConversation+MsgExt.h
– findMessages:succ:fail:
获取指定会话消息
- (int)findMessages:(NSArray *)locators succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail
Parameters
locators |
消息定位符(TIMMessageLocator)数组 |
---|---|
succ |
成功时回调 |
fail |
失败时回调 |
Return Value
0:本次操作成功;1:本次操作失败
Declared In
TIMConversation+MsgExt.h
– getSelfIdentifier
获取自己的 id
- (NSString *)getSelfIdentifier
Return Value
用户 id
Declared In
TIMConversation+MsgExt.h