最近在做输入状态改变, 消息撤回 , 置顶聊天 , 位置共享功能, 今天把做的消息回撤的功能整理下给大家分享, 如有做的不对的地方或者更好的地方, 希望大家多多指教
A用户发消息给B用户,当需要回撤的时候,将要回撤消息的id通过扩展消息发送给B,B检测到回撤的透传消息后,将对应 messageid 的消息从数据库删除。
第一步: 添加消息撤回菜单 在ChatViewController中添加
UIMenuItem *_retracementMenuItem;
然后在
中添加菜单
- (void)showMenuViewController:(UIView *)showInView
andIndexPath:(NSIndexPath *)indexPath
messageType:(EMMessageBodyType)messageType
代码如下: (注意这里我写了阅后即焚功能, 不能的话该部分可以去掉, 另外我这边的需求是聊天室消息不能撤回)
//撤回
if (_retracementMenuItem == nil) {
_retracementMenuItem= [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"retracement", @"Retracement")
action:@selector(messageRetracementMenuAction:)];
}
id<IMessageModel> model = [self.dataArray objectAtIndex:self.menuIndexPath.row];
BOOL isFireMsg = [[model.message.ext objectForKey:kGoneAfterReadKey] boolValue];
NSMutableArray *items = [NSMutabl