Android 群组集成¶
业务集成¶
群组涉及群组实例类(JCGroupItem)和群组成员类(JCGroupMember)。
JCGroupItem 有以下属性:
| 群组标识 | String groupId |
| 群组名称 | String name |
| 最新一次更新时间 | int changeState |
JCGroupMember 有以下属性:
| 群组标识 | String groupId |
| 用户标识 | String userId |
服务器端用户标识
|
String uid |
| 用户昵称 | String displayName |
| 角色类型,参见 JCGroupMemberType | int memberType |
| 成员改变状态 | int changeState |
群成员类型(JCGroupMemberType)有以下三种:
| 拥有者 | public static final int GROUP_MEMBER_TYPE_OWNER = 0 |
| 管理者 | public static final int GROUP_MEMBER_TYPE_MANAGER = 1 |
| 群成员 | public static final int GROUP_MEMBER_TYPE_MEMBER = 2 |
群组集成
开始集成群组功能前,请先进行 模块的初始化
// 初始化各模块,因为这些模块实例将被频繁使用,建议声明在单例中
JCClient client = JCClient.create(context, "your appkey", this, null);
JCGroup group = JCGroup.create(client, this);
其中,创建 JCGroup 实例的方法如下
/**
* 创建 JCGroup 对象
* @param client JCClient 对象
* @param callback JCGroupCallback 回调接口,用于接收 JCGroup 相关通知
* @return 返回 JCGroup 对象
*/
public static JCGroup create(JCClient client, JCGroupCallback callback)
开始集成
群组管理
1. 创建群
/**
* 创建群
* @param members JCGroupMemeber 队列
* @param groupName 群名称
* @return 返回操作id
*/
public abstract int createGroup(List<JCGroupMember> members, String groupName);
示例代码:
List<JCGroupMember> members = new ArrayList<>();
for (String userId: userIds) {
members.add(new JCGroupMember(null, userId, userId, JCGroup.GROUP_MEMBER_TYPE_MEMBER, JCGroup.GROUP_CHANGE_STATE_ADD));
}
group.createGroup(members, "test");
创建群回调
/**
* 创建群回调
* @param operationId 操作表示,由 createGroup 接口返回
* @param result true 表示登陆成功,false 表示登陆失败
* @param reason 当 result 为 false 时该值有效
* @param groupItem JCGroupItem 对象
* @see JCGroup.Reason
*/
void onCreateGroup(int operationId, boolean result, @JCGroup.Reason int reason,
JCGroupItem groupItem);
其中,JCGroup.Reason 有以下几种:
| 无异常 | public static final int REASON_NONE = 0 |
| 未登录 | public static final int REASON_NOT_LOGIN = 1 |
| 函数调用失败 | public static final int REASON_CALL_FUNCTION_ERROR = 2 |
| 超时 | public static final int REASON_TIME_OUT = 3 |
| 网络异常 | public static final int REASON_NETWORK = 4 |
| 参数错误 | public static final int REASON_PARAM_INVALID = 5 |
| 其他错误 | public static final int REASON_OTHER = 100 |
2. 获取群列表
/**
* 获取当前用户所有加入的群列表,结果通过 JCGroupCallback 中相应回调返回
* @param updateTime 最新一次记录的群列表服务器更新时间
* @return 返回操作id
*/
public abstract int fetchGroups(long updateTime);
示例代码:
group.fetchGroups(updateTime);
获取群列表结果回调
/**
* 拉取群列表结果回调
* @param operationId 操作表示,由 fetchGroups 接口返回
* @param result true 表示获取成功,false 表示获取失败
* @param reason 当 result 为 false 时该值有效
* @param groups 群列表
* @param updateTime 服务器更新时间
* @param fullUpdated 是否全更新
* @see JCGroup.Reason
*/
void onFetchGroups(int operationId, boolean result, @JCGroup.Reason int reason,
List<JCGroupItem> groups, long updateTime, boolean fullUpdated);
当群列表发生了改变,会收到 onGroupListChange 回调,此时可以调用 fetchGroups 接口获取更新
/**
* 群列表更新,调用 JCGroup fetchGroups 获取更新
*/
void onGroupListChange();
3. 获取群信息
/**
* 刷新群组信息
* @param groupId 群标识
* @param updateTime 最新一次记录的该群服务器更新时间
* @return 返回操作id
*/
public abstract int fetchGroupInfo(String groupId, long updateTime);
示例代码:
group.fetchGroupInfo(groupId, updateTime);
获取群详情结果回调
/**
* 拉取群详情结果回调
* @param operationId 操作表示,由 fetchGroupInfo 接口返回
* @param result true 表示获取成功,false 表示获取失败
* @param reason 当 result 为 false 时该值有效
* @param groupItem JCGroupItem 对象
* @param members 成员列表
* @param updateTime 服务器更新时间
* @param fullUpdated 是否全更新
* @see JCGroup.Reason
*/
void onFetchGroupInfo(int operationId, boolean result, @JCGroup.Reason int reason,
JCGroupItem groupItem, List<JCGroupMember> members,
long updateTime, boolean fullUpdated);
当群信息发生了改变,会收到 onGroupInfoChange 回调,此时可以调用 fetchGroupInfo 接口获取更新
/**
* 群信息更新,调用 JCGroup fetchGroupInfo 获取更新
* @param groupId 群标识
*/
void onGroupInfoChange(String groupId);
4. 添加、删除、更新群成员
/**
* 操作成员
* @param groupId 群标识
* @param members JCGroupMemeber 对象列表,通过 changeState 值来表明增加,更新,删除成员操作
* @return 返回操作id
*/
public abstract int dealMembers(String groupId, List<JCGroupMember> members);
Note
只有群主才可以删除成员。
其中,群变化状态(JCGroupChangeState)有以下几种:
| 无 | public static final int GROUP_CHANGE_STATE_NONE = 0 |
| 新增 | public static final int GROUP_CHANGE_STATE_ADD = 1 |
| 更新 | public static final int GROUP_CHANGE_STATE_UPDATE = 2 |
| 删除 | public static final int GROUP_CHANGE_STATE_REMOVE = 3 |
示例代码:
List<JCGroupMember> members = new ArrayList<>();
for (String userId: userIds) {
members.add(new JCGroupMember(groupId, userId, userId, JCGroup.GROUP_MEMBER_TYPE_MEMBER, JCGroup.GROUP_CHANGE_STATE_ADD));
}
group.dealMembers(groupId, members);
dealMembers 结果回调
/**
* dealMembers 结果回调
* @param operationId 操作表示,由 dealMembers 接口返回
* @param result true 表示成功,false 表示失败
* @param reason 当 result 为 false 时该值有效,参见 Reason
*/
void onDealMembers(int operationId, boolean result, @JCGroup.Reason int reason);
5. 修改昵称
/**
* 更新昵称
* @param selfInfo JCGroupMember 对象,请传入 groupId,displayName,memberType(保持不变)
* @return 返回操作id
*/
public abstract int updateSelfInfo(JCGroupMember selfInfo);
示例代码:
group.updateSelfInfo(selfInfo);
6. 更新群,修改群名称
/**
* 更新群
* @param groupItem JCGroupItem 对象,其中 JCGroupItem 中 changeState 值不影响具体操作
* @return 返回操作id
*/
public abstract int updateGroup(JCGroupItem groupItem);
示例代码:
group.updateGroup(groupItem);
更新群信息回调
/**
* 更新群信息调用回调
* @param operationId 操作表示,由 updateGroup 接口返回
* @param result true 表示登陆成功,false 表示登陆失败
* @param reason 当 result 为 false 时该值有效
* @param groupId 群标识
* @see JCGroup.Reason
*/
void onUpdateGroup(int operationId, boolean result, @JCGroup.Reason int reason, String groupId);
7. 离开群组
/**
* 离开群组
* @param groupId 群标识
* @return 返回操作id
*/
public abstract int leave(String groupId);
示例代码:
group.leave(groupId);
离开群组回调
/**
* 离开群组回调
* @param operationId 操作表示,由 leave 接口返回
* @param result true 表示成功,false 表示失败
* @param reason 当 result 为 false 时该值有效,参见 Reason
* @param groupId 群标识
*/
void onLeave(int operationId, boolean result, @JCGroup.Reason int reason, String groupId);
8. 解散群组
/**
* 解散群组,Owner才能解散群组
* @param groupId 群标识
* @return 返回操作id
*/
public abstract int dissolve(String groupId);
示例代码:
group.dissolve(groupId);
解散群组回调
/**
* 解散群组回调
* @param operationId 操作表示,由 dissolve 接口返回
* @param result true 表示成功,false 表示失败
* @param reason 当 result 为 false 时该值有效,参见 Reason
* @param groupId 群标识
*/
void onDissolve(int operationId, boolean result, @JCGroup.Reason int reason, String groupId);
收发群组消息
在群组中发送和接收消息参见 消息。