发送消息
接口
objc
@property (nonatomic, strong, nullable) id<BIMMessageSender> messageSender;
- (NSString *)sendMessage:(BIMMessage *)message
to:(BIMConversation *)conversation
assemble:(BIMMessageAssemble)assemble
progress:(BIMProgress _Nullable)progress
succ:(BIMMessageSucc)succ
fail:(BIMFail)fail;
- (NSString *)forwardMessage:(BIMMessage *)message
to:(BIMConversation *)conversation
assemble:(BIMMessageAssemble _Nullable)assemble
progress:(BIMProgress _Nullable)progress
succ:(BIMMessageSucc)succ
fail:(BIMFail)fail;
- (void)sendMessageReadReceipt:(BIMMessage *)message
to:(BIMConversation *)conversation
succ:(BIMMessageSucc _Nullable)succ
fail:(BIMFail _Nullable)fail;
- (void)sendUndoMessage:(BIMMessage *)message
to:(BIMConversation *)conversation
succ:(BIMMessageSucc)succ
fail:(BIMFail)fail;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
代码示例
swift
let msg = BIMManager.sharedInstance().createTextMessage("hello")
BIMManager.sharedInstance().send(msg,
to: conversation,
assemble: {
print("assembled")
},
progress: nil) {
print("send success")
} fail: { code, desc in
if msg.status == .reject {
// 服务端已明确拒绝该消息,可在消息气泡旁展示失败标识。
// msg.rejectRason 与 code 一致,例如敏感词拒绝为 204202。
showRejectedIcon(for: msg)
}
print("send fail: \(code) \(desc)")
}
BIMManager.sharedInstance().sendMessageReadReceipt(msg, to: conversation, succ: nil, fail: nil)
BIMManager.sharedInstance().sendUndoMessage(msg, to: conversation, succ: {
print("undo success")
}, fail: { code, desc in
print("undo fail: \(code) \(desc)")
})1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
服务端拒绝
收到消息协议中的 reject 后,SDK 会保留消息并执行以下处理:
- 将
message.status设置为BIMMessageStatusReject(Swift 为.reject)。 - 将后台拒绝码写入
message.rejectRason。 - 调用发送接口的
fail,其中code与rejectRason一致。
这类消息不应从本地消息列表删除,接入方可根据 .reject 在消息气泡左侧展示红色感叹号。当前常见拒绝码包括敏感词 204202 和发送频率限制 204203。
被服务端拒绝的消息不会进入服务端历史记录。SDK 会把消息状态和 rejectRason 一起保留在本地消息数据库中,并在获取聊天记录时按发送时间与服务端消息合并;因此重新进入会话或重新启动 App 后仍能看到该消息及原始拒绝码。发送中和发送失败的本地消息使用相同的合并规则。
