群组中如何使用@功能?
群组中,@某人的和群组普通消息没有区别,只是针对被@的用户在ui上显示会有不同。可以通过环信的扩展消息来实现。
1.发送方将想要@的人的环信id通过扩展字段放到扩展消息中,并把消息发到群里。
2.群中成员在收到消息时,先检查扩展字段中是否有对应的字段,如果有,取出其中的环信id。
3.检查取出的环信id与当前登录的环信id是否一致。
4.如果检测一致,需要在ui上做特殊处理,显示出对应的提示信息,如“[有人@我]“,如不一致,不做处理。
发送方具体举例:
iOS:
message.ext = @{@"remindEId":@"6001"}
android:
message.setAttribute("remindEId","6001")
然后将消息发送出去。
接收方具体举例:
iOS:
-(void)didReceiveMessage:(EMMessage *)message{
// 获取当前登录用户环信id
NSString *currentUserId = [[[EaseMob sharedInstance].chatManager loginInfo] objectForKey: kSDKUsername];
// 被@用户环信id
NSString *remindEID = [message.ext objectForKey:@"remindEId"];
if ([remindEID isEqualToString:currentUserId]) {
// 当前登录用户被@,需要UI做单独处理
}
}
android:
// 获取当前登录用户环信id
String currentUserId = EMChatManager.getInstance().getCurrentUser();
EMMessage message = EMChatManager.getInstance().getMessage(msgId);
// 被@用户环信id
String remindEID = message.getStringAttribute("remindEId")
if(remindEID==currentUserId){
// 当前登录用户被@,需要UI做单独处理
}
1.发送方将想要@的人的环信id通过扩展字段放到扩展消息中,并把消息发到群里。
2.群中成员在收到消息时,先检查扩展字段中是否有对应的字段,如果有,取出其中的环信id。
3.检查取出的环信id与当前登录的环信id是否一致。
4.如果检测一致,需要在ui上做特殊处理,显示出对应的提示信息,如“[有人@我]“,如不一致,不做处理。
发送方具体举例:
iOS:
message.ext = @{@"remindEId":@"6001"}
android:
message.setAttribute("remindEId","6001")
然后将消息发送出去。
接收方具体举例:
iOS:
-(void)didReceiveMessage:(EMMessage *)message{
// 获取当前登录用户环信id
NSString *currentUserId = [[[EaseMob sharedInstance].chatManager loginInfo] objectForKey: kSDKUsername];
// 被@用户环信id
NSString *remindEID = [message.ext objectForKey:@"remindEId"];
if ([remindEID isEqualToString:currentUserId]) {
// 当前登录用户被@,需要UI做单独处理
}
}
android:
// 获取当前登录用户环信id
String currentUserId = EMChatManager.getInstance().getCurrentUser();
EMMessage message = EMChatManager.getInstance().getMessage(msgId);
// 被@用户环信id
String remindEID = message.getStringAttribute("remindEId")
if(remindEID==currentUserId){
// 当前登录用户被@,需要UI做单独处理
}
6 个评论
-(void)didReceiveMessage:(EMMessage *)message{
// 获取当前登录用户环信id
NSString *currentUserId = [[[EaseMob sharedInstance].chatManager loginInfo] objectForKey: kSDKUsername];
// 被@用户环信id
NSString *remindEID = [message.ext objectForKey:@"remindEId"];
if ([remindEID isEqualToString:currentUserId]) {
// 当前登录用户被@,需要UI做单独处理
}
}
我的另一种实现方式:仔细分析一下微信,如果单聊,发出去的内容就是:某姓名+空格+发的内容;
如果是群聊格式:@某姓名+空格+发的内容;
所以在用户长安用户头像时,你把@某姓名+空格 写到输入框中就行了,比上面方法简单;
如果用户长安出现 @某姓名+空格,用户手动删除@某姓名+空格 ,发出去的还是没有@某姓名+空格的格式。
tableview 代码里加入以下代码:
//长安用户头像
//
// if ([_conversation.chatter isEqualToString:model.message.conversationChatter]) {
// UILongTapGestureRecognizer_ *pressUserPhotoGes = [[UILongTapGestureRecognizer_ alloc]initWithTarget:self action:@selector(addPrefixMessage:)];
// pressUserPhotoGes.model = model;
// if (cell.messageModel.isSender) {
// cell.headImageView.userInteractionEnabled = NO;
// }
//
// [cell.headImageView addGestureRecognizer:pressUserPhotoGes];
// }
第2个方法:
/**
* 聊天@功能
*
* @param ges MessageModel
*/
- (void)addPrefixMessage:(UILongTapGestureRecognizer_ *)ges {
MessageModel *messageModel = ges.model;
NSString *nickName = messageModel.nickName;
if (nickName.length) {
NSArray *tempArray = [nickName componentsSeparatedByString:@"("];
[self.chatToolBar.inputTextView becomeFirstResponder];
if (messageModel.messageType == eMessageTypeChat) {//单聊
self.chatToolBar.inputTextView.text = [NSString stringWithFormat:@"%@ ",tempArray[0]];
}else{
self.chatToolBar.inputTextView.text = [NSString stringWithFormat:@"@%@ ",tempArray[0]];
}
}
}