群组中如何使用@功能?

群组中,@某人的和群组普通消息没有区别,只是针对被@的用户在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 个评论

赏16元
-(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]];
}

}

}
没帮助啊,这个文档都有啊

要回复文章请先登录注册

知识价值的认可,源自您的赞赏

扫描二维码,你的支付将由imGeek代收后转给对方

×