插入消息
插入消息的接口不会将消息向远端发送,所以卸载重装或者换端登录时插入的消息不会从远端同步到本地数据库。
插入发送消息
您可以通过 insertOutgoingMessage:
接口在本地数据库插入一条对外发送的消息。以下示例使用 RCChannelClient
下的 insertOutgoingMessage
方法。
提示
- 如果 sentTime 有问题会影响消息排序,请谨慎使用!
- 插入成功的消息不会立刻在会话页面展示。
接口原型
Objective C
- (void)insertOutgoingMessage:(RCConversationType)conversationType
targetId:(NSString *)targetId
sentStatus:(RCSentStatus)sentStatus
content:(RCMessageContent *)content
sentTime:(long long)sentTime
completion:(nullable void(^)(RCMessage *_Nullable message))completion;
插入本地数据库的消息如需支持消息扩展功能,必须使用 RCChannelClient
下的插入方法,否则无法打开消息的可扩展属性(canIncludeExpansion
)。本地插入消息时不支持设置消息扩展信息数据。您可以在消息插入后,选择合适的时机为消息设置扩展数据。详见[消息扩展]。
参数说明
参数 | 类型 | 说明 |
---|---|---|
conversationType | [RCConversationType] | 会话类型。 |
targetId | NSString | 会话 targetId |
channelId | NSString | 超级群会话的频道 Id,非超级群会话传 nil。 |
canIncludeExpansion | BOOL | 是否支持消息扩展。YES 表示可扩展;NO 表示不可扩展。 |
sentStatus | [RCSentStatus] | 发送状态。 |
content | [RCMessageContent] | 消息的内容。 |
sentTime | long long | 消息发送的 Unix 时间戳,单位为毫秒(传 0 会按照本地时间插入)。 |
completion | Block | 异步回调,返回已插入的消息实体 [RCMessage]。 |
示例代码
Objective C
RCTextMessage *content = [RCTextMessage messageWithContent:@"测试文本消息"];
[[RCChannelClient sharedChannelManager]
insertOutgoingMessage:ConversationType_PRIVATE
targetId:@"targetId"
channelId:@"channelId"
canIncludeExpansion:YES
sentStatus:SentStatus_SENT
content:content
sentTime:sentTime
completion::^(RCMessage * _Nullable message) {
}];