环信php创建群组,群组@功能

群组中,@某人的和群组普通消息没有区别,只是针对被@的用户在 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)didReceiveMessage:(EMMessage *)message{

// 获取当前登录用户环信ID

NSString *currentUserId = [[[EaseMob sharedInstance].chatManager loginInfo] objectForKey: kSDKUsername];

// 被@用户环信ID

NSArray *atList = [message.ext objectForKey:@"em_at_list"];

for (NSString *atName in atList) {

if (atName isEqualToString:currentUserId) {

// 当前用户被@,需要单独处理UI

}

}

}

Android:

@Override

public void onEvent(EMNotifierEvent event) {

switch (event.getEvent()) {

case EventNewMessage:

// 获取当前登录用户环信ID

String currentUserId = EMChatManager.getInstance().getCurrentUser();

// 获取到message

EMMessage message = (EMMessage) event.getData();

try {

JSONArray atJson = message.getJSONArrayAttribute("em_at_list"); // 被@用户列表,如果当前用户被@,需要ui特殊显示

} catch (Exception e) {

e.printStackTrace();

}

break;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值