V2TIMGroupInfo
对象中。该对象由 IM SDK 创建并返回,不支持用户自定义。V2TIMManager.getGroupManager().getGroupsInfo(groupIDList, new V2TIMValueCallback<List<V2TIMGroupInfoResult>>() {@Overridepublic void onSuccess(List<V2TIMGroupInfoResult> v2TIMGroupInfoResults) {// 获取群资料成功}@Overridepublic void onError(int code, String desc) {// 获取群资料失败}});
[[V2TIMManager sharedInstance] getGroupsInfo:@[@"groupA"] succ:^(NSArray<V2TIMGroupInfoResult *> *groupResultList) {// 获取群资料成功} fail:^(int code, NSString *desc) {// 获取群资料失败}];
template <class T>class ValueCallback final : public V2TIMValueCallback<T> {public:using SuccessCallback = std::function<void(const T&)>;using ErrorCallback = std::function<void(int, const V2TIMString&)>;ValueCallback() = default;~ValueCallback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess(const T& value) override {if (success_callback_) {success_callback_(value);}}void OnError(int error_code, const V2TIMString& error_message) override {if (error_callback_) {error_callback_(error_code, error_message);}}private:SuccessCallback success_callback_;ErrorCallback error_callback_;};V2TIMStringVector groupIDList;groupIDList.PushBack("group1");auto callback = new ValueCallback<V2TIMGroupInfoResultVector>{};callback->SetCallback([=](const V2TIMGroupInfoResultVector& groupInfoResultList) {// 获取群资料成功delete callback;},[=](int error_code, const V2TIMString& error_message) {// 获取群资料失败delete callback;});V2TIMManager::GetInstance()->GetGroupManager()->GetGroupsInfo(groupIDList, callback);
addGroupListener
添加了群组事件监听器,群资料被修改后,全员会收到 onGroupInfoChanged
(Android / iOS & Mac / Windows) 回调。群组类型 | 可以修改群资料的成员角色 |
好友工作群(Work) | 所有群成员 |
陌生人社交群(Public) | 群主和管理员 |
临时会议群(Meeting) | 群主和管理员 |
社群(Community) | 群主和管理员 |
直播群(AVChatRoom) | 群主 |
V2TIMGroupInfo
的字段都能修改,只有可写的属性才能修改。// 示例代码:修改群资料V2TIMGroupInfo v2TIMGroupInfo = new V2TIMGroupInfo();v2TIMGroupInfo.setGroupID("需要修改的群 ID");v2TIMGroupInfo.setFaceUrl("http://xxxx");V2TIMManager.getGroupManager().setGroupInfo(v2TIMGroupInfo, new V2TIMCallback() {@Overridepublic void onSuccess() {// 修改群资料成功}@Overridepublic void onError(int code, String desc) {// 修改群资料失败}});
V2TIMGroupInfo *info = [[V2TIMGroupInfo alloc] init];info.groupID = @"需要修改的群 ID";info.faceURL = @"http://xxxx";[[V2TIMManager sharedInstance] setGroupInfo:info succ:^{// 修改群资料成功} fail:^(int code, NSString *desc) {// 修改群资料失败}];
class Callback final : public V2TIMCallback {public:using SuccessCallback = std::function<void()>;using ErrorCallback = std::function<void(int, const V2TIMString&)>;Callback() = default;~Callback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess() override {if (success_callback_) {success_callback_();}}void OnError(int error_code, const V2TIMString& error_message) override {if (error_callback_) {error_callback_(error_code, error_message);}}private:SuccessCallback success_callback_;ErrorCallback error_callback_;};V2TIMGroupInfo info;info.groupID = "需要修改的群 ID";info.faceURL = "http://xxxx";info.modifyFlag |= V2TIM_GROUP_INFO_MODIFY_FLAG_FACE_URL;auto callback = new Callback;callback->SetCallback([=]() {// 修改群资料成功delete callback;},[=](int error_code, const V2TIMString& error_message) {// 修改群资料失败delete callback;});V2TIMManager::GetInstance()->GetGroupManager()->SetGroupInfo(info, callback);
V2TIMGroupInfo
中的属性 customInfo
表示群自定义字段,您同样可调用上节介绍的 API setGroupInfo
修改该字段值。V2TIMGroupInfo
中的其他字段不同,设置群自定义字段需要 2 个步骤:setGroupInfo
接口设置该字段,value 长度不超过 512 字节。initGroupAttributes
接口设置群属性,其设置更灵活(无需控制台配置),支持的存储也更大(最大支持 16K)。详情请参考 群自定义属性。V2TIMReceiveMessageOpt
的可选项有:消息接收选项 | 支持类型 | 功能描述 |
V2TIM_RECEIVE_MESSAGE | 单聊、群聊、全局 | 在线时正常接收消息,离线时接收离线推送通知 |
V2TIM_NOT_RECEIVE_MESSAGE | 单聊、群聊 | 在线和离线都不接收消息 |
V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE | 单聊、群聊、全局 | 在线时正常接收消息,离线时不接收离线推送通知 |
V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT | 群聊 | 在线接收消息,离线只接收 at 消息的推送 |
V2TIM_NOT_RECEIVE_MESSAGE_EXCEPT_AT | 话题 | 在线和离线只接收 at 消息 |
V2TIMReceiveMessageOpt
可以实现群消息免打扰:免打扰效果 | 消息接收选项 | 说明 |
完全不接收消息 | V2TIM_NOT_RECEIVE_MESSAGE | 群内的任何消息都收不到,会话列表也不会更新。 |
接收消息但不提醒 | V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE | 此时建议在会话列表界面显示小圆点(不显示未读数): 1、收到新消息,会话列表需要更新,通过会话 V2TIMConversation 中的 unreadCount 获取到消息未读数。 2、如果未读数大于零,UI 显示小红点而非未读数。 |
接收消息但只提醒 at 消息 | V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT | 正常接收群内消息只提醒 at 消息。 |
只接收 at 消息 | V2TIM_NOT_RECEIVE_MESSAGE_EXCEPT_AT | 在线和离线只接收话题的 at 消息。 |
V2TIMConversation
的 unreadCount
,只能在好友工作群(Work)、陌生人社交群(Public)和社群(Community)中使用,直播群(AVChatRoom)、临时会议群(Meeting)暂不支持。群组类型详见 群组介绍。V2TIMManager.getMessageManager().setGroupReceiveMessageOpt("groupA", V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE, new V2TIMCallback() {@Overridepublic void onSuccess() {// 修改群消息接收选项成功}@Overridepublic void onError(int code, String desc) {// 修改群消息接收选项失败}});
[[V2TIMManager sharedInstance] setGroupReceiveMessageOpt:@"groupA" opt:V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE succ:^{// 修改群消息接收选项成功} fail:^(int code, NSString *desc) {// 修改群消息接收选项失败}];
class Callback final : public V2TIMCallback {public:using SuccessCallback = std::function<void()>;using ErrorCallback = std::function<void(int, const V2TIMString&)>;Callback() = default;~Callback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess() override {if (success_callback_) {success_callback_();}}void OnError(int error_code, const V2TIMString& error_message) override {if (error_callback_) {error_callback_(error_code, error_message);}}private:SuccessCallback success_callback_;ErrorCallback error_callback_;};V2TIMString groupID = "groupA";V2TIMReceiveMessageOpt opt = V2TIMReceiveMessageOpt::V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE;auto callback = new Callback;callback->SetCallback([=]() {// 修改群消息接收选项成功delete callback;},[=](int error_code, const V2TIMString& error_message) {// 修改群消息接收选项失败delete callback;});V2TIMManager::GetInstance()->GetMessageManager()->SetGroupReceiveMessageOpt(groupID, opt, callback);
本页内容是否解决了您的问题?