群的一些细节问题

在野火IM系统中,群是有2种可用类型的。创建群的时候有个type参数,不同的参数可以选择不同的群类型

/**
 群类型

 - GroupType_Normal: 管理员和群主才能踢人,其它所有人的功能一样,包括拉人,修改群信息等。
 - GroupType_Free: 所有人都能加人、退群和修改群信息
 - GroupType_Restricted: 带有群管理功能
 */
typedef NS_ENUM(NSInteger, WFCCGroupType) {
    GroupType_Normal = 0,
    GroupType_Free = 1,
    GroupType_Restricted = 2,
} ;

1. 1. GroupType_Normal

这种群更像微信的群类型,只有管理员和群主可以踢人。其它所有人的权限都是公平的,都可以拉人,可以修改群组名和头像。

2. 2. GroupType_Restricted

这种群是限制群,只有管理员和群主才可以做所有的操作。群成员可以根据群设置是否拉人,是否发起私聊。群成员不能修改群信息,不能修改群头像。damo中默认使用这种类型。

3. 群头像的问题

野火IM群头像默认是客户端创建群组时生成,且只生成一次,这样当群成员变更时,群的头像就会与实际不符合,需要进行处理,可以有一下几种方式:

  1. 手动更新,群类型为GroupType_Restricted,管理员和群主可以手动更新群头像。当群类型为GroupType_Normal时,所有人都可以更新群头像。

  2. 变更用户更新;当有人操作群成员时,由操作人重新生成头像并更新,这时需要注意,当群类型为GroupType_Restricted时,只有管理员和群主能更新。当群类型为GroupType_Normal时所有人才可以更新。

  3. 客户端自动生成;创建群组时不填写群头像,当客户端发现群头像为空时,自动在本地自动拼接群头像并显示。这种方式可能更接近微信的处理方式。

  4. 服务器端生成;客户端在变更群成员时通知应用服务,应用服务获取群成员信息并更新群头像,可以考虑重新定义群头像更新通知消息,改成不存储消息,这样客户端就不会显示更新了群头像,注意群头像更新通知的类型要保持,因为协议栈要根据这个消息来更新群信息。

4. 群公告

群公告功能是在应用服务实现的,实现方法很简单,客户端编辑后调用appserver保存,保存成功后发送@全体的消息,每次进入到群设置界面时从appserver拉取群公告信息,然后展示。群公告谁可以发和编辑的权限是客户端判断的,如果需要进一步加强权限判断,可以在应用服务收到更新群公告信息时判断是不是群管理员。

5. 通知消息的自定义

客户端和Server API对群的所有操作接口都有个可选参数notify_message,当为空时IM服务处理成功后发送系统默认通知消息,如果客户需要自定义通知的内容,可以发送这个可选参数,当IM服务器处理成功后会发送接口带来的消息内容。需要注意,协议会根据消息类型来刷新群的信息,所以如果自定义消息,请复写现有通知的定义确保使用正确的群消息类型。另外消息都有个Persist的属性,可以修改 这个属性来改变通知是否显示和存储。

6. 群的常见问题

6.1. 1. 群人数有上限吗?

A. 群人数没有上限,在代码中没有控制群组的人数。但实际使用时需要注意群人数对服务器性能的影响是指数级别的,建议一般情况下不要超过1000人。

6.2. 2. 用户有加群数或者创建群数上限吗?

A. 没有,用户可以创建或者加入无限多的群。

2018 © wildfirechat.cn 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2020-05-16 19:27:59

results matching ""

    No results matching ""