消息撤回
更新时间: 2023/12/12 03:23:46
本文主要介绍如何通过 NERoom SDK 在聊天室中撤回消息。
功能描述
聊天室消息撤回实际为双向撤回,即撤回消息之后,消息接收者和发送者都将收到一条消息撤回通知,并删除对应的消息。
撤回消息后,会触发聊天室通知消息,包括被撤回的消息 ID,操作者 ID 等信息,您可以根据需要自行处理该信息。
用户只有在聊天室中发送消息成功,才能撤回该消息。未发送成功的消息不支持撤回。
前提条件
在聊天室中发送消息成功。
实现步骤
-
调用
getRoomContext
接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
func getRoomContext(roomUuid: String) -> NERoomContext?
-
调用
recallChatroomMessage
方法实现消息撤回。func recallChatroomMessage(messageId: String, messageTime: TimeInterval, callback: NECallback<AnyObject>?)
名称 类型 描述 messageId String 需要撤回的聊天室消息 ID。 messageTime TimeInterval 被撤回消息的时间戳。 callback NECallback ? 撤回聊天室信息的回调。 -
触发消息撤回事件的通知([
NERoomChatNotificationMessage
](https://doc.yunxin.163.com/neroom/api-docs/neroom_iOS_zh/NERoom_iOS_API_Reference/classes/NERoomChatNotificationMessage)。该通知的类型(
NERoomChatEventType
)为recall
,表示聊天室消息撤回。并通过其recalledMessageId
方法获取被撤回消息的 ID。
示例代码
实现消息撤回的示例代码如下:
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
/// 添加代理
roomContext.addRoomListener(self)
roomContext.chatController.recallChatroomMessage(messageId: "被撤回的聊天室消息id", messageTime: 被撤回的聊天室消息时间戳) { code, msg, _ in
if code == 0 {
print("撤回消息成功")
} else {
print("撤回消息失败")
}
}
消息回调示例代码如下:
func onReceiveChatroomMessages(messages: [NERoomChatMessage]) {
for msg in messages {
if msg.messageType == .notification,
let m = msg as? NERoomChatNotificationMessage {
print("逻辑处理")
}
}
}
此文档是否对你有帮助?