如何不显示退群和踢人消息
在某些应用中,退群或者移除成员的通知是不太适合显示出来的,这里就讲一下如何做到。
首先是这个通知消息很重要,因为客户端会根据这个消息触发更新群成员列表。所以不能通过覆盖其它自定义消息的方法来达到不显示的目的。可以在客户端修改退群或者移除群成员的存储属性,当消息的flag变成不存储时,这样所有人都不会显示出谁谁退出群组了。下面是android的代码,其它端都是类似:
@ContentTag(type = ContentType_QUIT_GROUP, flag = PersistFlag.No_Persist) //flag改成不存储。
public class QuitGroupNotificationContent extends GroupNotificationMessageContent {
...
}
@ContentTag(type = ContentType_KICKOF_GROUP_MEMBER, flag = PersistFlag.No_Persist) //flag改成不存储。
public class KickoffGroupMemberNotificationContent extends GroupNotificationMessageContent {
...
}
客户可能还会有更进一步的需求,有人退群或者移除群成员是需要通知群主、群管理员和相关人员的,这个该怎么办呢?办法也很简单,在IM服务的配置文件中找到下面这个属性,设置为3就可以了
## 当群成员退出或者被移除时,是否同时给管理员和相关人员发送显式通知消息。
## 0 不发送,1 退群时发送,2 踢人时发送,3 退群和踢人时都发送。
group.visible_quit_or_kickoff_notification 0
当设置为3时,有人退群或者移除成员时,IM服务除了发送普通的群通知外,还要给相关人员(群主、群管理员、移除对象)发送类型为120和121的消息,这两个消息会显示相关通知。细心的同学很快就会发现,这两个新消息其实就是退群和踢人通知的拷贝,只不过是存储类型的。
所以总结一下,在服务器和客户端都支持的情况下(服务器有这个配置,客户端有类型为120和121的消息),客户端修改退群和踢人通知为不存储,服务器修改配置为3即可。