IM 即时通讯 (442)
Android (209)
- 初始化&链接 (8)
- 事件&监听处理 (7)
- 用户信息 (13)
- 会话列表 (16)
- 聊天会话 (26)
- 消息处理 (35)
- 自定义消息 (6)
- 音视频 (2)
- 推送&通知 (34)
- 扩展功能 (4)
- 第三方地图 (3)
- 依赖&配置 (9)
- 升级说明 (3)
- 其他 (43)
iOS (168)
- SDK 导入 (10)
- 连接 (8)
- 事件处理 (2)
- 用户信息 (3)
- 会话列表 (14)
- 聊天会话 (44)
- 消息处理 (26)
- 自定义消息 (8)
- 推送&通知 (19)
- 扩展功能 (5)
- 国际化 (4)
- 音视频 (3)
- 其他 (22)
Web (36)
Server (29)
iOS 基于聊天页面如何实现批量转发和批量删除
回答:
iOS 如何实现批量转发和批量删除
在 RCConversationViewController 的子类的 viewDidLoad 方法中调用下面的方法
- (void)addToolbarItems { //转发按钮 UIButton *forwardBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 40)]; [forwardBtn setImage:[UIImage imageNamed:@"forward_message"] forState:UIControlStateNormal]; [forwardBtn addTarget:self action:@selector(forwardMessage) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *forwardBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:forwardBtn]; //删除按钮 UIButton *deleteBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 40)]; [deleteBtn setImage:[RCKitUtility imageNamed:@"delete_message" ofBundle:@"RongCloud.bundle"] forState:UIControlStateNormal]; [deleteBtn addTarget:self action:@selector(deleteMessages) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *deleteBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:deleteBtn]; //按钮间 space UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; [self.messageSelectionToolbar setItems:@[spaceItem,forwardBarButtonItem,spaceItem,deleteBarButtonItem,spaceItem] animated:YES]; }
这段代码的意思是在聊天页面的多选工具栏上增加转发和删除按钮
在转发和删除的方法中可以通过 self.selectedMessages
可以获取已经被选中的消息
删除的话直接删除对应的消息,然后调用 self.allowsMessageCellSelection = NO;
将消息 cell 重置为初始状态
转发的话,可以检查一下消息是否可以转发(比如红包消息,位置消息等不应该被转发,基于用户隐私考虑是否转发语音消息等),然后进入通讯录页面转发给指定的好友
需要注意的是 iOS 端有发送频率限制,最多 5条/秒 ,如果直接 for 循环发送会有部分发送失败,建议是转发过程做个等待,比如 0.3 秒发送一条消息,转发完成之后需要调用 self.allowsMessageCellSelection = NO;
将聊天页面消息 cell 重置为初始状态
SealTalk 默认不允许转发的消息包含以下消息,主要包含了音视频通话,位置共享,红包和语音等消息,开发者可根据自已的业务情况实现需要转发的消息类型
@"RC:VCAccept", @"RC:VCHangup", @"RC:VCInvite", @"RC:VCModifyMedia", @"RC:VCModifyMem", @"RC:VCRinging",@"RC:VCSummary", @"RC:RLStart", @"RC:RLEnd", @"RC:RLJoin", @"RC:RLQuit", @"RCJrmf:RpMsg", @"RC:VcMsg"
以上代码均可以在 SealTalk 源码的 RCDChatViewController.m 中找到