删除消息
超级群会话消息存储在服务端(免费存储 7 天)和用户设备本地数据库。您可以通过IMLib SDK 删除自己的历史消息,支持仅从本地数据库删除消息、仅从融云服务端删除消息或者本地与服务端同时删除消息。
提示
- 客户端的删除消息的操作均指从当前登录用户的历史消息记录中删除消息,不影响会话中其他用户的历史消息记录。
- 如果 App 的管理员或者某普通用户希望在该 App 中彻底删除一条消息,例如在所有超级群成员的聊天记录中删除一条消息,应使用客户端或服务端的撤回消息功能。消息成功撤回后,原始消息内容会在所有用户的本地与服务端历史消息记录中删除。
- 从 5.3.0 版本开始,建议使用 RCChannelClient 中异步返回结果的接口,原同步接口同时废弃。
功能 | 本地/服务端 | API |
---|---|---|
从本地删除全部频道的消息(时间戳) | 仅从本地删除 | deleteUltraGroupMessagesForAllChannel |
从本地删除指定频道的消息(时间戳) | 仅从本地删除 | deleteUltraGroupMessages |
从服务端删除指定频道的消息(时间戳) | 仅从服务端删除 | deleteRemoteUltraGroupMessages |
从本地和远端删除消息(消息对象) | 同时从本地和服务端删除 | deleteRemoteMessages |
从本地删除全部频道的消息(时间戳)
您可以删除超级群会话全部频道指定时间戳之前的本地历史消息,需提供 Unix 时间戳,精确到毫秒。单次操作仅针对单个超级群,不支持一次删除多个超级群中的消息。 服务端保存的该用户的历史消息记录不受影响。如果该用户从服务端获取历史消息,可能会获取到在本地已删除的消息。
接口原型
Objective C
- (void)deleteUltraGroupMessagesForAllChannel:(NSString *)targetId
timestamp:(long long)timestamp
completion:(nullable void(^)(BOOL result))completion;
参数说明
参数 | 类型 | 说明 |
---|---|---|
targetId | NSString | 超级群会话的 targetId。 |
timestamp | long long | 时间戳。删除该时间戳之前的消息,传入 0 表示删除该会话所有本地历史消息。 |
completion | Block | 删除历史消息结果回调。 |
示例代码
Objective C
[[RCChannelClient sharedChannelManager]
deleteUltraGroupMessagesForAllChannel:@"targetId"
timestamp:timestamp
completion:^(BOOL){
//异步回调,是否成功
}];
从本地删除指定频道的消息(时间戳)
您可以删除超级群会话指定频道指定时间戳之前的本地历史消息,需提供 Unix 时间戳,精确到毫秒。单次操作仅针对单个超级群,不支持一次删除多个超级群中的消息。 服务端保存的该用户的历史消息记录不受影响。如果该用户从服务端获取历史消息,可能会获取到在本地已删除的消息。
接口原型
Objective C
- (void)deleteUltraGroupMessages:(NSString *)targetId
channelId:(nullable NSString *)channelId
timestamp:(long long)timestamp
completion:(nullable void(^)(BOOL result))completion;
参数说明
参数 | 类型 | 说明 |
---|---|---|
targetId | NSString | 超级群会话的 targetId。 |
channelId | NSString | 超级群频道的 channelId。 |
timestamp | long long | 时间戳。删除该时间戳之前的消息,传入 0 表示删除该会话所有本地历史消息。 |
completion | Block | 删除历史消息结果回调。 |
示例代码
Objective C
[[RCChannelClient sharedChannelManager]
deleteUltraGroupMessages:@"targetId"
channelId:@"channelId"
timestamp:timestamp
completion:^(BOOL){
//异步回调,是否成功
}];
从服务端指定频道的消息(时间戳)
您可以删除超级群会话指 定频道指定时间戳之前的远端历史消息,需提供 Unix 时间戳,精确到毫秒。单次操作仅针对单个超级群,不支持一次删除多个超级群中的消息。 客户端本地保存的该用户的历史消息记录不受影响。
提示
在融云控制台为 App 启用超级群服务后,融云会自动启用历史消息存储(免费存储 7 天)。
接口原型
Objective C
- (void)deleteRemoteUltraGroupMessages:(NSString *)targetId
channelId:(NSString *)channelId
timestamp:(long long)timestamp
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode status))errorBlock
参数说明
参数 | 类型 | 说明 |
---|---|---|
targetId | NSString | 超级群会话的 targetId。 |
channelId | NSString | 超级群频道的 channelId。 |
timestamp | long long | 时间戳。删除该时间戳之前的消息,传入 0 表示删除该会话所有远端历史消息。 |
successBlock | Block | 删除历史消息成功回调。 |
errorBlock | Block | 删除历史消息失败回调。 |
示例代码
Objective C
[[RCChannelClient sharedChannelManager] deleteRemoteUltraGroupMessages:@"targetId" channelId:@"channelId" timestamp:0 success:^{
} error:^(RCErrorCode status) {
}];
从本地和远端删除指定频道的消息(消息对象)
如果您希望从自己的超级群会话的历史记录中彻底删除一组消息,可以使用 deleteRemoteMessage:
方法,传入需要被删除的消息对象 RCMessage 列表。
删除成功后,您无法从本地数据库获取消息。如果从服务端获取历史消息,也无法获取到已删除的消息。
接口原型
Objective C
- (void)deleteRemoteMessage:(RCConversationType)conversationType
targetId:(NSString *)targetId
channelId:(nullable NSString *)channelId
messages:(NSArray<RCMessage *> *)messages
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode status))errorBlock;
参数说明
参数 | 类型 | 说明 |
---|---|---|
conversationType | RCConversationType | 会话类型,超级群传入 ConversationType_ULTRAGROUP。 |
targetId | NSString | 超级群会话的 targetId。 |
channelId | NSString | 超级群频道的 channelId。 |
messages | NSArray | 将被删除的消息列表。请确保所提供的消息均属于同一超级群频道(channelId )。一次最多删除 100 条消息。 |
successBlock | Block | 删除历史消息成功回调。 |
errorBlock | Block | 删除历史消息失败回调。 |
示例代码
Objective C
[[RCChannelClient sharedChannelManager]
deleteRemoteMessage:ConversationType_ULTRAGROUP
targetId:@"targetId"
messages:messages
success:^{}
error:^(RCErrorCode status) {
}];