V2TIMGroupManager(Android)
/ V2TIMManager(Group)(iOS and macOS)
core class.V2TIMMessageManager(Android)
/ V2TIMManager(Message)(iOS and Mac)
core class.V2TIMGroupInfo
object (Android / iOS and macOS / Windows) and set groupType
to Community
and isSupportTopic
to true
/YES
.V2TIMGroupInfo v2TIMGroupInfo = new V2TIMGroupInfo();v2TIMGroupInfo.setGroupName("This is a Community");v2TIMGroupInfo.setGroupType(V2TIMManager.GROUP_TYPE_COMMUNITY);v2TIMGroupInfo.setSupportTopic(true);V2TIMManager.getGroupManager().createGroup(v2TIMGroupInfo, null, new V2TIMValueCallback<String>() {@Overridepublic void onSuccess(String groupID) {// Community group created successfully}@Overridepublic void onError(int code, String desc) {// Creation failed}});
V2TIMGroupInfo *groupInfo = [[V2TIMGroupInfo alloc] init];;groupInfo.groupName = @"This is a Community";groupInfo.groupType = GroupType_Community;groupInfo.isSupportTopic = YES;[[V2TIMManager sharedInstance] createGroup:groupInfo memberList:nil succ:^(NSString *groupID) {// Community group created successfully} fail:^(int code, NSString *desc) {// Creation failed}];
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_;};V2TIMGroupInfo info;info.groupType = "Community";info.groupName = "This is a Community";info.isSupportTopic = true;auto callback = new ValueCallback<V2TIMString>{};callback->SetCallback([=](const V2TIMString& groupID) {// Community group created successfullydelete callback;},[=](int error_code, const V2TIMString& error_message) {// Creation faileddelete callback;});V2TIMManager::GetInstance()->GetGroupManager()->CreateGroup(info, {}, callback);
getJoinedCommunityList
(Android / iOS & Mac / Windows) API to get the list of topic supporting communities that you have joined.V2TIMManager.getGroupManager().getJoinedCommunityList(new V2TIMValueCallback<List<V2TIMGroupInfo>>() {@Overridepublic void onSuccess(List<V2TIMGroupInfo> v2TIMGroupInfos) {// Community group list got successfully}@Overridepublic void onError(int code, String desc) {// Failed to get the community group list}});
[[V2TIMManager sharedInstance] getJoinedCommunityList:^(NSArray<V2TIMGroupInfo *> *groupList) {// Community group list got successfully} fail:^(int code, NSString *desc) {// Failed to get the community group list}];
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_;};auto callback = new ValueCallback<V2TIMGroupInfoVector>{};callback->SetCallback([=](const V2TIMGroupInfoVector& groupInfoList) {// Community group list obtained successfullydelete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to get the community group listdelete callback;});V2TIMManager::GetInstance()->GetGroupManager()->GetJoinedCommunityList(callback);
Category | Feature | API |
Community group management | ||
| ||
| ||
| ||
| ||
Community group member management | ||
| ||
| ||
|
V2TIMTopicInfo
object (Android / iOS and macOS / Windows).createTopicInCommunity
(Android / iOS and Mac / Windows) API to create a topic.V2TIMTopicInfo topicInfo = new V2TIMTopicInfo();topicInfo.setTopicName(topicName);topicInfo.setTopicFaceUrl(topicFaceUrl);topicInfo.setIntroduction(topicIntroduction);topicInfo.setNotification(topicNotification);topicInfo.setCustomString(topicCustomString);// Set `groupID` to the ID of a community group that supports topicsV2TIMManager.getGroupManager().createTopicInCommunity(groupID, topicInfo, new V2TIMValueCallback<String>() {@Overridepublic void onSuccess(String topicID) {// Topic created successfully}@Overridepublic void onError(int code, String desc) {// Failed to create the topic}});
V2TIMTopicInfo *topicInfo = [[V2TIMTopicInfo alloc] init];topicInfo.topicName = @"topicName";topicInfo.topicFaceURL = @"topicFaceUrl";topicInfo.introduction = @"topicIntroduction";topicInfo.notification = @"topicNotification";topicInfo.customString = @"topicCustomString";// Set `groupID` to the ID of a community group that supports topics[[V2TIMManager sharedInstance] createTopicInCommunity:@"groupID" topicInfo:topicInfo succ:^(NSString *topicID) {// Topic created successfully} fail:^(int code, NSString *desc) {// Failed to create the topic}];
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_;};V2TIMTopicInfo topicInfo;topicInfo.topicID = "topicID";topicInfo.topicName = "topicName";topicInfo.topicFaceURL = "topicFaceURL";topicInfo.introduction = "introduction";topicInfo.notification = "notification";auto callback = new ValueCallback<V2TIMString>{};callback->SetCallback([=](const V2TIMString& string) {// Topic created successfullydelete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to create the topicdelete callback;});// Set `groupID` to the ID of a community group that supports topicsV2TIMManager::GetInstance()->GetGroupManager()->CreateTopicInCommunity("groupID", topicInfo, callback);
V2TIMManager.getGroupManager().deleteTopicFromCommunity(groupID, topicIDList, new V2TIMValueCallback<List<V2TIMTopicOperationResult>>() {@Overridepublic void onSuccess(List<V2TIMTopicOperationResult> v2TIMTopicOperationResults) {// Topic deleted successfully}@Overridepublic void onError(int code, String desc) {// Failed to delete the topic}});
[[V2TIMManager sharedInstance] deleteTopicFromCommunity:@"groupID" topicIDList:@[@"topic1", @"topic2"] succ:^(NSMutableArray<V2TIMTopicOperationResult *> *resultList) {// Topic deleted successfully} fail:^(int code, NSString *desc) {// Failed to delete the topic}];
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 topicIDList;topicIDList.PushBack("topic1");topicIDList.PushBack("topic2");auto callback = new ValueCallback<V2TIMTopicOperationResultVector>{};callback->SetCallback([=](const V2TIMTopicOperationResultVector& topicOperationResultList) {// Topic deleted successfullydelete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to delete the topicdelete callback;});V2TIMManager::GetInstance()->GetGroupManager()->DeleteTopicFromCommunity("groupID", topicIDList, callback);
V2TIMTopicInfo
object (Android / iOS and macOS / Windows) and set the fields to be modified.setTopicInfo
(Android / iOS and Mac / Windows) API to modify topic information.V2TIMTopicInfo topicInfo = new V2TIMTopicInfo();topicInfo.setTopicID(topicID);topicInfo.setTopicName(topicName);topicInfo.setTopicFaceUrl(topicFaceUrl);topicInfo.setIntroduction(topicIntroduction);topicInfo.setNotification(topicNotification);topicInfo.setCustomString(topicCustomString);topicInfo.setDraft(topicDraft);topicInfo.setAllMute(false);V2TIMManager.getGroupManager().setTopicInfo(topicInfo, new V2TIMCallback() {@Overridepublic void onSuccess() {// Topic information modified successfully}@Overridepublic void onError(int code, String desc) {// Failed to modify the topic information}});
V2TIMTopicInfo *topicInfo = [[V2TIMTopicInfo alloc] init];topicInfo.topicID = @"topicID";topicInfo.topicName = @"topicName";topicInfo.topicFaceURL = @"topicFaceUrl";topicInfo.introduction = @"topicIntroduction";topicInfo.notification = @"topicNotification";topicInfo.customString = @"topicCustomString";topicInfo.draftText = @"topicDraft";topicInfo.isAllMuted = NO;[[V2TIMManager sharedInstance] setTopicInfo:topicInfo succ:^{// Topic information modified successfully} fail:^(int code, NSString *desc) {// Failed to modify the topic information}];
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_;};V2TIMTopicInfo topicInfo;topicInfo.topicID = "topicID";topicInfo.topicName = "topicName";topicInfo.notification = "topicFaceURL";topicInfo.introduction = "introduction";topicInfo.topicFaceURL = "notification";topicInfo.customString = "customString";topicInfo.modifyFlag = V2TIMGroupInfoModifyFlag::V2TIM_GROUP_INFO_MODIFY_FLAG_GROUP_NAME |V2TIMGroupInfoModifyFlag::V2TIM_GROUP_INFO_MODIFY_FLAG_NOTIFICATION |V2TIMGroupInfoModifyFlag::V2TIM_GROUP_INFO_MODIFY_FLAG_INTRODUCTION |V2TIMGroupInfoModifyFlag::V2TIM_GROUP_INFO_MODIFY_FLAG_FACE_URL |V2TIMGroupInfoModifyFlag::V2TIM_TOPIC_INFO_MODIFY_FLAG_CUSTOM_STRING;auto callback = new Callback;callback->SetCallback([=]() {// Topic information modified successfullydelete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to modify the topic informationdelete callback;});V2TIMManager::GetInstance()->GetGroupManager()->SetTopicInfo(topicInfo, callback);
setInheritMessageReceiveOptionFromCommunity
(Android / iOS & Mac / Windows).V2TIMTopicInfo topicInfo = new V2TIMTopicInfo();topicInfo.setTopicID(topicID);topicInfo.setInheritMessageReceiveOptionFromCommunity(true, new V2TIMCallback() { @Override public void onSuccess() { // success } @Override public void onError(int code, String desc) { // failed } });
V2TIMTopicInfo *topicInfo = [[V2TIMTopicInfo alloc] init];topicInfo.topicID = @"topicID";[topicInfo setInheritMessageReceiveOptionFromCommunity:YES succ:^{// success} fail:^(int code, NSString *desc) {// failed}];
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_;};auto callback = new Callback;callback->SetCallback([=]() {// successdelete callback;},[=](int error_code, const V2TIMString& error_message) {// faileddelete callback;});V2TIMTopicInfo topicInfo;topicInfo.topicID = "topicID";topicInfo.SetInheritMessageReceiveOptionFromCommunity(true, callback);
topicIDList
is empty, the list of all topics of the community group will be got.topicIDList
is the ID of specified topics, the list of the specified topics will be got.V2TIMManager.getGroupManager().getTopicInfoList(groupID, topicIDList, new V2TIMValueCallback<List<V2TIMTopicInfoResult>>() {@Overridepublic void onSuccess(List<V2TIMTopicInfoResult> v2TIMTopicInfoResults) {// Topic list obtained successfully}@Overridepublic void onError(int code, String desc) {// Failed to obtain the topic list}});
[[V2TIMManager sharedInstance] getTopicInfoList:@"groupID" topicIDList:@[@"topic1", @"topic2"] succ:^(NSMutableArray<V2TIMTopicInfoResult *> *resultList) {// Topic list obtained successfully} fail:^(int code, NSString *desc) {// Failed to obtain the topic list}];
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 topicIDList;topicIDList.PushBack("topic1");topicIDList.PushBack("topic2");auto callback = new ValueCallback<V2TIMTopicInfoResultVector>{};callback->SetCallback([=](const V2TIMTopicInfoResultVector& topicInfoResultList) {// Topic list obtained successfullydelete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to obtain the topic listdelete callback;});V2TIMManager::GetInstance()->GetGroupManager()->GetTopicInfoList("groupID", topicIDList, callback);
customInfo
(Android / iOS and macOS / Windows) in the community profile defines a field to store the topic group list of the community. The customString
field (Android / iOS and macOS / Windows) in the topic profile stores the topic group.customInfo
field for the topic group list in the community (group) profile is used to display the group list.customString
in the topic profile is used to get the group name for assignment.key
value of the customInfo
field for the topic group list of the community (group). The following sample code names it topic_category
.customInfo
in groupInfo
. Here is a Map
, and the key
value is the name of the field for the topic group list you defined.
Sample code:List<String> categoryList = new ArrayList<>();categoryList.add("Group 1");categoryList.add("Group 2");byte[] categoriesByteArray = gson.toJson(categoryList).getBytes();Map<String, byte[]> customMap = new HashMap<>();// You need to configure the custom group field `topic_category` in the console first.customMap.put("topic_category", categoriesByteArray);V2TIMGroupInfo modifyInfo = new V2TIMGroupInfo();modifyInfo.setGroupID(groupID);modifyInfo.setCustomInfo(customMap);V2TIMManager.getGroupManager().setGroupInfo(modifyInfo, new V2TIMCallback() {@Overridepublic void onSuccess() {// Modified the group profile successfully}@Overridepublic void onError(int code, String desc) {// Failed to modify the group profile}});
NSArray *categoryList = @[@"Group 1", @"Group 2"];NSError *error = nil;NSData *data = [NSJSONSerialization dataWithJSONObject:categoryListoptions:NSJSONWritingPrettyPrintederror:&error];if ([data length] > 0 && error == nil) {// You need to configure the custom group field `topic_category` in the console first.NSDictionary *customInfo = @{@"topic_category": data};V2TIMGroupInfo *info = [[V2TIMGroupInfo alloc] init];info.groupID = @"Group ID of the group to be modified";info.customInfo = customInfo;[[V2TIMManager sharedInstance] setGroupInfo:infosucc:^{// Modified the group profile successfully} fail:^(int code, NSString *desc) {// Failed to modify the group profile}];}
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 = "groupA";V2TIMCustomInfo customInfo;std::string str{u8"[\\"Group 1\\", \\"Group 2\\"]"};// You need to configure the custom group field `topic_category` in the console first.customInfo.Insert("topic_category", {reinterpret_cast<const uint8_t*>(str.data()), str.size()});info.modifyFlag = V2TIMGroupInfoModifyFlag::V2TIM_GROUP_INFO_MODIFY_FLAG_CUSTOM_INFO;auto callback = new Callback;callback->SetCallback([=]() {// Modified the group profile successfullydelete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to modify the group profiledelete callback;});V2TIMManager::GetInstance()->GetGroupManager()->SetGroupInfo(info, callback);
String groupID = "group1";List<String> groupIDList = new ArrayList<>();groupIDList.add(groupID);V2TIMManager.getGroupManager().getGroupsInfo(groupIDList, new V2TIMValueCallback<List<V2TIMGroupInfoResult>>() {@Overridepublic void onSuccess(List<V2TIMGroupInfoResult> v2TIMGroupInfos) {if (v2TIMGroupInfos.size() == 0) {return;}V2TIMGroupInfoResult v2TIMGroupInfoResult = v2TIMGroupInfos.get(0);if (v2TIMGroupInfoResult.getResultCode() == BaseConstants.ERR_SUCC) {byte[] topicCategoryBytes = v2TIMGroupInfoResult.getGroupInfo().getCustomInfo().get("topic_category");List<String> topicCategories = null;if (topicCategoryBytes != null) {Gson gson = new Gson();try {// Parse the group listtopicCategories = gson.fromJson(new String(topicCategoryBytes), List.class);} catch (JsonParseException e) {}}}}@Overridepublic void onError(int code, String desc) {}});
NSArray *groupIDList = @[@"group1"];[[V2TIMManager sharedInstance] getGroupsInfo:groupIDListsucc:^(NSArray<V2TIMGroupInfoResult *> *groupResultList) {// Conversation profile obtained successfullyif (groupResultList.count == 0) {return;}V2TIMGroupInfoResult *result = groupResultList.firstObject;if (result.resultCode != 0) {return;}NSData *categoryData = result.info.customInfo[@"topic_category"];if (categoryData == nil) {return;}NSArray *categoryList;NSError *error = nil;id jsonObject = [NSJSONSerialization JSONObjectWithData:categoryDataoptions:NSJSONReadingAllowFragmentserror:nil];if (jsonObject != nil && error == nil) {// Parse the group listcategoryList = (NSArray *)jsonObject;}} fail:^(int code, NSString *desc) {// Failed to obtain}];
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) {if (groupInfoResultList.Size() == 1) {const V2TIMGroupInfoResult& groupInfoResult = groupInfoResultList[0];if (groupInfoResult.resultCode == 0) {V2TIMGroupInfo info = groupInfoResult.info;V2TIMCustomInfo customInfo = info.customInfo;if (customInfo.Count("topic_category")) {const V2TIMBuffer& topicCategory = customInfo.Get("topic_category");// Parse the group list}}}delete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to get the community group listdelete callback;});V2TIMManager::GetInstance()->GetGroupManager()->GetGroupsInfo(groupIDList, callback);
customString
field of the topic.Map<String, Object> map = new HashMap<>();map.put("category", "Group 1");Gson gson = new Gson();V2TIMTopicInfo topicInfo = new V2TIMTopicInfo();topicInfo.setTopicID(topicID);topicInfo.setCustomString(gson.toJson(map));V2TIMManager.getGroupManager().setTopicInfo(topicInfo, new V2TIMCallback() {@Overridepublic void onSuccess() {// Topic information modified successfully}@Overridepublic void onError(int code, String desc) {// Failed to modify the topic information}});
NSDictionary *dict = @{@"category": @"Group 1"};NSError *error = nil;NSData *data = [NSJSONSerialization dataWithJSONObject:dictoptions:0error:&error];if ([data length] > 0 && error == nil) {NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];V2TIMTopicInfo *info = [[V2TIMTopicInfo alloc] init];info.topicID = @"ID of the topic to be set";info.customString = dataStr;[[V2TIMManager sharedInstance] setTopicInfo:info succ:^{// Set the topic profile successfully} fail:^(int code, NSString *desc) {// Failed to set the topic profile}];}
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_;};V2TIMTopicInfo topicInfo;topicInfo.topicID = "topicID";topicInfo.customString = u8"{\\"category\\": \\"Group 1\\"}}";topicInfo.modifyFlag = V2TIMGroupInfoModifyFlag::V2TIM_TOPIC_INFO_MODIFY_FLAG_CUSTOM_STRING;auto callback = new Callback;callback->SetCallback([=]() {// Topic information modified successfullydelete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to modify the topic informationdelete callback;});V2TIMManager::GetInstance()->GetGroupManager()->SetTopicInfo(topicInfo, callback);
V2TIMGroupListener
(Android / iOS and macOS / Windows), topic callback methods such as onTopicCreated
, onTopicDeleted
, and onTopicInfoChanged
are added to listen for topic events. V2TIMGroupListener v2TIMGroupListener = new V2TIMGroupListener() {@Overridepublic void onTopicCreated(String groupID, String topicID) {// Listen for topic creation notifications}@Overridepublic void onTopicDeleted(String groupID, List<String> topicIDList) {// Listen for topic deletion notifications}@Overridepublic void onTopicInfoChanged(String groupID, V2TIMTopicInfo topicInfo) {// Listen for topic information update notifications}};V2TIMManager.getInstance().addGroupListener(v2TIMGroupListener);
[[V2TIMManager sharedInstance] addGroupListener:self];- (void)onTopicCreated:(NSString *)groupID topicID:(NSString *)topicID {// Listen for topic creation notifications}- (void)onTopicDeleted:(NSString *)groupID topicIDList:(NSArray<NSString *> *)topicIDList {// Listen for topic deletion notifications}- (void)onTopicChanged:(NSString *)groupID topicInfo:(V2TIMTopicInfo *)topicInfo {// Listen for topic information update notifications}
class GroupListener final : public V2TIMGroupListener {public:GroupListener() = default;~GroupListener() override = default;void OnTopicCreated(const V2TIMString& groupID, const V2TIMString& topicID) override {// Listen for topic creation notifications}void OnTopicDeleted(const V2TIMString& groupID, const V2TIMStringVector& topicIDList) override {// Listen for topic deletion notifications}void OnTopicChanged(const V2TIMString& groupID, const V2TIMTopicInfo& topicInfo) override {// Listen for topic information update notifications}};// Add a group event listener. Keep `groupListener` valid before the listener is removed to ensure event callbacks are received.GroupListener groupListener;V2TIMManager::GetInstance()->AddGroupListener(&groupListener);
Feature | API | Description |
Set groupID to the topic ID. | ||
Set groupID in the message to the topic ID. | ||
Set groupID to the topic ID. | ||
Set groupID to the topic ID. | ||
Set groupID to the topic ID. |
Was this page helpful?