提交工单
咨询集成、功能及报价等问题
ZIM SDK 支持实现以下两种形式的消息转发:
在实现“转发消息”功能之前,请确保:
发送合并消息步骤如下:
通过 ZIMCombineMessage 对象构造合并消息体。参数包含如下:
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| title | NSString * | 是 | 合并消息标题,长度上限默认为 20 字节。如需配置,请联系 ZEGO 技术支持。 |
| summary | NSString * | 是 | 合并消息概要,长度上限默认为 100 字节。如需配置,请联系 ZEGO 技术支持。 |
| messageList | NSArray<ZIMMessage *> * | 是 | 需要合并转发的原始消息列表,不支持信令、弹幕、撤回、系统类型的消息,不支持合并转发非成功的消息。 |
ZIM SDK 支持在合并消息内包含其他合并消息。
调用 sendMessage 接口发送合并消息。开发者可参考 收发普通消息 - 发送消息 了解此接口参数详情。
以下为用户在单聊会话中发送合并消息的示例代码:
// 在单聊会话发送合并信息
ZIMConversationType type = ZIMConversationTypePeer; // 会话类型,取值为 单聊:0,房间:1,群组:2
ZIMMessageSendConfig *config = [[ZIMMessageSendConfig alloc] init];
// 需要合并转发的原始消息列表,可从历史消息中获取
NSMutableArray<ZIMMessage *> *messageList = [NSMutableArray array];
[messageList addObject:message1];
[messageList addObject:message2];
ZIMCombineMessage *combineMessage = [[ZIMCombineMessage alloc] initWithTitle:@"标题" summary:@"概要" messages:messageList];
[zim sendMessage:combineMessage conversationId:@"conv_id" type:type config:config callback:^(ZIMMessage *zimMessage, ZIMError *error) {
if (error) {
// 开发者可以通过该回调监听消息是否发送成功。
}
}];
接收合并消息的回调接口与接收普通消息的回调接口一致,请参考 收发普通消息 - 接收消息 了解具体接口。
接收消息回调仅返回合并消息的标题、概要、合并 ID 的信息,如需了解合并消息内容,请参考 查看合并消息详情。
以下为用户在单聊会话中接收合并消息的示例代码:
// 用户在单聊会话中接收合并消息
- (void)zim:(ZIM *)zim
receivePeerMessage:(NSArray<ZIMMessage *> *)messageList
fromUserID:(NSString *)fromUserID {
for (ZIMMessage *message in messageList) {
if ([message type] == ZIMMessageTypeCombine) {
// 合并消息
}
}
}
消息操作(监听、增加以及拉取历史消息)只会返回合并消息的标题、概要、合并 ID 的信息。因此,当需要了解合并消息包含的子消息时,可以通过调用 queryCombineMessageDetailByMessage 接口查询。
操作的结果将通过 ZIMCombineMessageDetailQueriedCallback 返回,可知合并消息下具体的子消息内容。
- (void)queryCombineMessageDetailByMessage:(ZIMCombineMessage *)message
callback:(ZIMCombineMessageDetailQueriedCallback)callback
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| message | ZIMCombineMessage | 是 | 合并类型消息。 |
[zim queryCombineMessageDetailByMessage:combineMessage callback:^(ZIMCombineMessage * _Nonnull message, ZIMError * _Nonnull errorInfo) {
// 查看合并消息,具体的子消息在回调中的 message 的 messageList 里。
}];
若子消息列表中存在合并消息,要想获取该合并消息下的具体子消息,需再次调用 queryCombineMessageDetailByMessage 接口,将通过接口获取到的合并消息作为参数,以此类推,对于嵌套多层的合并消息会存在多次调用的情况。
逐条转发消息本质上就是将已发送成功的消息作为参数发送到其它会话,与发送普通消息所用接口相同,开发者可参考 收发普通消息 - 发送消息 了解此接口参数详情。

联系我们
文档反馈