群组管理


EMError error;
    string subject = getStringAttrFromJson(json, "subject");//群名称
    string description = getStringAttrFromJson(json, "description");//群简介
    string welcomeMessage = getStringAttrFromJson(json, "welcomeMessage");//欢迎辞
    string style = getStringAttrFromJson(json, "style");//群类型
    string maxUserCount = getStringAttrFromJson(json, "maxUserCount");//最大成员数
    stringstream stream;
    stream << maxUserCount;
    int nMaxUserCount;
    stream >> nMaxUserCount;
    EMGroupSetting setting;
    EMGroupSetting::EMGroupStyle emGroupStyle = EMGroupSetting::EMGroupStyle::PRIVATE_OWNER_INVITE;//私有群,成员无邀请权限
    if (style.compare("PRIVATE_MEMBER_INVITE") == 0)
    {
        emGroupStyle = EMGroupSetting::EMGroupStyle::PRIVATE_MEMBER_INVITE;//私有群,成员有邀请权限
    }
    else if (style.compare("PUBLIC_JOIN_APPROVAL") == 0)
    {
        emGroupStyle = EMGroupSetting::EMGroupStyle::PUBLIC_JOIN_APPROVAL;//公有群,加入需要验证
    }
    else if (style.compare("PUBLIC_JOIN_OPEN") == 0)
    {
        emGroupStyle = EMGroupSetting::EMGroupStyle::PUBLIC_JOIN_OPEN;//公有群,开放加入
    }
    setting.setStyle(emGroupStyle);
    setting.setMaxUserCount(nMaxUserCount);
    EMGroupMemberList members = getArrayAttrFromJson(json, "members");
    EMGroupPtr group = g_client->getGroupManager().createGroup(subject, description, welcomeMessage, setting, members, error);
    string ret;
    if (error.mErrorCode == EMError::EM_NO_ERROR)
    {
        ret = "{\"id\":\"" + group->groupId()
            + "\",\"subject\":\"" + group->groupSubject() + "\"}";
        callback->Success(ret);
    }
    else
    {
        callback->Failure(error.mErrorCode, error.mDescription);
    }
EMError error;
    string id = getStringAttrFromJson(json, "id");
    string welcomeMessage = getStringAttrFromJson(json, "welcomeMessage");
    EMGroupMemberList members = getArrayAttrFromJson(json, "members");
    EMGroupPtr group = g_client->getGroupManager().addGroupMembers(id, members, welcomeMessage, error);
    string ret;
    if (error.mErrorCode == EMError::EM_NO_ERROR)
    {
        ret = "{\"id\":\"" + group->groupId()
            + "\",\"subject\":\"" + group->groupSubject() + "\"}";
        callback->Success(ret);
    }
    else
    {
        callback->Failure(error.mErrorCode, error.mDescription);
    }
EMGroupPtr group = g_client->getGroupManager().removeGroupMembers(id, members, error);
g_client->getGroupManager().leaveGroup(id, error);
g_client->getGroupManager().destroyGroup(id, error);
EMGroupPtr group = g_client->getGroupManager().acceptInvitationFromGroup(id, user, error);
EMGroupPtr group = g_client->getGroupManager().declineInvitationFromGroup(id, user, error);
EMGroupPtr group = g_client->getGroupManager().acceptJoinGroupApplication(id, user, error);
EMGroupPtr group = g_client->getGroupManager().declineJoinGroupApplication(id, user, reason, error);
//从服务器获取自己加入的和创建的群组列表,此api获取的群组sdk会自动保存到内存和db。
    EMError error;
    EMGroupList groupList = g_client->getGroupManager().fetchAllMyGroups(error);
    string ret;
    if (error.mErrorCode == EMError::EM_NO_ERROR) {
        for (EMGroupPtr group : groupList)
        {
            ret += "{\"jid\":\"blahblah\",\"name\":\"";
            ret += group->groupSubject();
            ret += "\",\"roomId\":\"";
            ret += group->groupId();
            ret += "\"},";
        }
        if (!ret.empty())
        {
            string tmp = ret.substr(0, ret.length() - 1);
            ret = "[" + tmp + "]";
        }
        string enc = Utils::URLEncode(ret);

        callback->Success(ret);
        lock_guard<std::mutex> guard(Utils::group_mutex);
        Utils::g_bGroupListDownloaded = true;
    }
    else
    {
        callback->Failure(error.mErrorCode, error.mDescription);
    }
EMGroupPtr group = g_client->getGroupManager().changeGroupSubject(id, subject, error);
EMGroupPtr group = g_client->getGroupManager().changeGroupDescription(id, subject, error);
//获取群成员
    EMError error;
    string id = getStringAttrFromJson(json, "id");
    if (!id.empty())
    {
        string ret;
        const EMGroupMemberList *gml = g_client->getGroupManager().fetchGroupSpecification(id, error)->groupMembers();
        if (gml == NULL)
        {
            return;
        }
        for (string member : *gml)
        {
            ret += "{\"jid\":\"";
            ret += member;
            ret += "\",\"affiliation\":\"";
            ret += "member";
            ret += "\"},";
        }
        if (!ret.empty())
        {
            string tmp = ret.substr(0, ret.length() - 1);
            ret = "[" + tmp + "]";
        }
        if (error.mErrorCode != EMError::EM_NO_ERROR)
        {
            callback->Failure(error.mErrorCode, error.mDescription);
        }
        else
        {
            callback->Success(ret);
        }
    }
//获取群主
std::string owner = g_client->getGroupManager().fetchGroupSpecification(id, error)->groupOwner();

只能用于加入公开群。

const EMGroupPtr group = g_client->getGroupManager().joinPublicGroup(id, error);
class GroupManagerListener : public EMGroupManagerListener {
public:
    GroupManagerListener() {
    }
    virtual void onReceiveInviteFromGroup(const std::string groupId, const std::string& inviter, const std::string& inviteMessage);
    virtual void onReceiveInviteAcceptionFromGroup(const EMGroupPtr group, const std::string& invitee);
    virtual void onReceiveInviteDeclineFromGroup(const EMGroupPtr group, const std::string& invitee, const std::string &reason);
    virtual void onAutoAcceptInvitationFromGroup(const EMGroupPtr group, const std::string& inviter, const std::string& inviteMessage);
    virtual void onLeaveGroup(const EMGroupPtr group, EMGroup::EMGroupLeaveReason reason);
    virtual void onReceiveJoinGroupApplication(const EMGroupPtr group, const std::string& from, const std::string& message);
    virtual void onReceiveAcceptionFromGroup(const EMGroupPtr group);
    virtual void onReceiveRejectionFromGroup(const std::string &groupId, const std::string &reason);
    virtual void onUpdateMyGroupList(const std::vector<EMGroupPtr> &list);
};
...
...
GroupManagerListener *mGroupManagerListener = new GroupManagerListener();
g_client->getGroupManager().addListener(mGroupManagerListener);


上一页:好友管理

下一页:聊天室