请问环信有阅后即焚的功能吗???????

 
 
共3个回复

5夏0

2016-08-10 17:02

具體案例代碼有嗎  

lizg

2016-08-10 19:08

http://www.imgeek.org/question/8740  这里有代码 http://www.imgeek.org/article/825307498  这里有思路 阅后即焚,是指对方查看你发的消息后,双方同时删除。 这个功能可以用环信的“已读”回调实现,当对方查看消息后,发送已读通知,双方同时删除就可以了。

lifei9241

2015-10-12 11:08

可以通过消息扩展配合已读回执进行实现。 流程如下: A-->B 发送阅后即焚消息: 首先,如果是阅后即焚消息,需要在消息中标明,该消息是阅后即焚,这个时候, 用到了EMMessage的ext属性, NSMutableDictionary *fireDict = [NSMutableDictionary dictionary]; message.ext = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:@"isFire"]; [fireDict setObject:message forKey:message.messageId]; [[EaseMob sharedInstance].chatManager asyncSendMessage:message progress:nil]; 到此,A构建了一个带有ext的message,其中带有isFire的key,并且将其发出给B。 同时,我本地维护了一个dict,里面的key为messageID,value为阅后即焚的message 当B实现了IChatManagerDelegate委托,会调用回调方法,收到A发来的消息 B收到消息: -(void)didReceiveMessage:(EMMessage *)message{ // 此时收到了A发来的消息,这个时候,我们需要对这个消息进行分析,看它是否是阅后即焚的消息 BOOL isFire = [[message.ext objectForKey:@"isFire"] boolValue]; 到目前为止,可以判断B收到的消息是否为阅后即焚消息。 之后的逻辑如下 如果该消息为阅后即焚,在B看过这条消息后,调用 - (void)sendHasReadResponseForMessage:(EMMessage *)message;方法,向A发送“已读” 如A实现IChatManagerDelegate委托,会调用方法: - (void)didReceiveHasReadResponse:(EMReceiptResp *)resp; 具体处理如下, A收到消息后:从我们的fireDict中,通过id,查找该message是否存在 EMMessage *message = [fireDict objectForKey:resp.chatId]; 此时如果存在,说明该消息是阅后即焚,且B已读。 接下来就是ui处理和db处理, EMConversation *conversation = [[EaseMob sharedInstance].chatManager conversationForChatter:resp.from isGroup:NO]; // 因为只有单聊中存在阅后即焚,所以isGroup始终为NO 通过resp.from 来查到message对应的conversation, [conversation removeMessage:resp.chatId]; 然后调用删除message的接口把它删掉,之后处理ui上的删除。 此时,阅后即焚功能就已经完成。  
点击此处继续提问与开发者们互动

申请试用

提交后工作人员会尽快与您联系进行功能演示
技术咨询已转移到管理后台,请先登录

即时通讯云使用者请在应用详情页面咨询
客服云使用者请进入管理员模式咨询

×

400电话

商务咨询

技术咨询

免费试用