环信吧 关注:74贴子:137
  • 6回复贴,共1
谁用环信做过iOS的@功能啊


IP属地:山东来自iPhone客户端1楼2017-02-18 10:09回复
    群组中,@某人的和群组普通消息没有区别,只是针对被@的用户在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做单独处理


    2楼2017-02-27 16:18
    回复
      2025-08-01 10:16:49
      广告
      不感兴趣
      开通SVIP免广告
      -(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做单独处理
      }
      }
      我的另一种实现方式:仔细分析一下微信,如果单聊,发出去的内容就是:某姓名+空格+发的内容;
      如果是群聊格式:@某姓名+空格+发的内容;
      所以在用户长安用户头像时,你把@某姓名+空格 写到输入框中就行了,比上面方法简单;
      如果用户长安出现 @某姓名+空格,用户手动删除@某姓名+空格 ,发出去的还是没有@某姓名+空格的格式。


      3楼2017-02-27 16:18
      回复
        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]];
        }
        }
        }


        4楼2017-02-27 16:19
        收起回复
          环信在ie8 环境下可以发送图片吗


          IP属地:广东5楼2017-09-16 16:08
          回复
            请问谁用过环信的dolores项目


            6楼2018-07-23 20:47
            回复