====== 群组@功能 ====== ---- 群组中,@某人的和群组普通消息没有区别,只是针对被@的用户在 UI 上显示会有不同。可以通过环信的扩展消息来实现。 - 发送方将想要@的人的环信 ID 通过扩展字段放到扩展消息中,并把消息发到群里。 - 群中成员在收到消息时,先检查扩展字段中是否有对应的字段,如果有,取出其中的环信 ID。 - 检查取出的环信 ID 与当前登录的环信 ID 是否一致。 - 如果检测一致,需要在 UI 上做特殊处理,显示出对应的提示信息,如"[有人@我]",如不一致,不做处理。 发送方具体举例: iOS: // @某些人 message.ext = @{@"em_at_list":@[@"6001",@"6002"]}; // @6001,6002 Android: List atMembers = new ArrayList(); atMembers.Add("6001"); atMembers.Add("6002"); JSONArray atJson = new JSONArray(atMembers); // 设置消息的扩展为@群成员类型 message.setAttribute("em_at_list", atJson); // @6001,6002 接收方具体举例: iOS: -(void)didReceiveMessages:(NSArray *)messages{ // 获取当前登录用户环信ID NSString *currentUserId = [[[EaseMob sharedInstance].chatManager loginInfo] objectForKey: kSDKUsername]; // 被@用户环信ID for(EMMessage *msg in messages){ NSArray *atList = [message.ext objectForKey:@"em_at_list"]; for (NSString *atName in atList) { if (atName isEqualToString:currentUserId) { // 当前用户被@,需要单独处理UI } } } } Android: public void onMessageReceived(List messages) { String currentUserId = EMChatManager.getInstance().getCurrentUser(); for (EMMessage message : messages) { try { JSONArray atJson = message.getJSONArrayAttribute("em_at_list"); // 被@用户列表,如果当前用户被@,需要ui特殊显示 } catch (Exception e) { e.printStackTrace(); } } } // 获取当前登录用户环信ID ---- 上一页:[[im:other:integrationcases:movedata|数据平滑迁移]] 下一页:[[im:other:integrationcases:Snapchat|阅后即焚]]