注册

群组中如何使用@功能?

群组中,@某人的和群组普通消息没有区别,只是针对被@的用户在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]]; } } }
没帮助啊,这个文档都有啊

要回复文章请先登录注册