Manage groups
Update time: 2023/02/09 06:18:45
NIM SDK allows you to manage advanced groups, such as creating, joining, and leaving groups, transferring the ownership of a group, querying group information, and dismissing a group.
The NIMTeamManager
protocol offers methods used to manage groups. The NIMTeamManagerDelegate
delegate protocol contains callbacks for group events.
Listeners for group events
You can register listeners for group events before group operations. If listeners are registered, you can receive notifications for corresponding group operations.
You can register the following callbacks as required.
onTeamAdded:
: called when a user joins a new group.onTeamUpdated:
: called when the group information is updated.onTeamRemoved:
: called when a member leaves a group.onTeamMemberChanged:
: called when the number of members or member profile changes.onTeamMemberUpdated:withMembers:
: called when member information changes including the ID of an updated member.onTeamMemberRemoved:withMembers:
: called when a member is removed, including the ID of a removed member.
Add listeners for group events by calling addDelegate:
.
Sample code:
/// The custom class implements the NIMTeamManagerDelegate interface
/// Group delegate interface declaration
/// NIMTeamAdapter.h
@interface NIMTeamAdapter :NSObject<NIMTeamManagerDelegate>
@end
/// Group delegate interface implementation
/// NIMTeamAdapter.m
@implementation NIMTeamAdapter
/// Callback for updating group information
- (void)onTeamUpdated:(NIMTeam *)team {
NSLog(@"[On team updated, teamId: %@]", [team teamId]);
}
@end
...
/// main.m
/// instantiate the class
static NIMTeamAdapter *adpater;
adpater = [[NIMTeamAdapter alloc] init];
/// Add the group delegate
[[[NIMSDK sharedSDK] teamManager] addDelegate:adpater];
/// Update the group profile and trigger the delegate
// [[[NIMSDK sharedSDK] teamManager] updateTeamName:@"TestDelegate"
// teamId:@"6271272396"
// completion:nil];
To cancel the listener, call removeDelegate:
.
Workflow
This document introduces the implementation process of group management by taking the interaction among group owners, administrators, and regular members.
Create a group
Create a group by calling the createTeam:users:completion:
method and the creator becomes the group owner.
Parameter | Description |
---|---|
name | Group name |
type | Group type. NIMTeamTypeAdvanced indicates an advanced group. |
avatarUrl | The avatar of a group |
intro | Group introduction |
announcement | Group announcement |
clientCustomInfo | Client custom information |
postscript | Additional message |
joinMode | Authentication mode NIMTeamJoinModeNoAuth: No authentication is required. Everyone is allowed to join a group NIMTeamJoinModeNeedAuth: The verification is required to join a group NIMTeamJoinModeRejectAll: No one is allowed to join a group. |
inviteMode | The permission to invite people to join a group. NIMTeamInviteModeManager : only the group owner and administrators can invite people to join a group. NIMTeamInviteModeAll : everyone in the group can invite people to join the group. |
beInviteMode | acceptance mode NoAuth: No verification required NeedAuth: The verification from the invited people is required. |
updateInfoMode | The permission to edit group information. ·NIMTeamUpdateInfoModeManager·: Only the group owner and administrators can edit the group information ·NIMTeamUpdateInfoModeAll·: Everyone can edit the group information. |
updateClientCustomMode | Permission to edit the client custom group information NIMTeamUpdateClientCustomModeManager: administrators NIMTeamUpdateClientCustomModeAll: everyone |
maxMemberCountLimitation | The maximum number of people in a group |
antispamBusinessId | Business ID that requires content moderation |
** Sample code:**
NIMCreateTeamOption *option = [NIMCreateTeamOption new];
[option setName:@"a created group chat"];
[option setType:NIMTeamTypeAdvanced];
[option setIntro:@"Introduction"];
/// users List of user accids
NSArray<NSString *> *users = [NSArray arrayWithObjects:@"user01", @"user02", nil];
/// completion Callback for completion
NIMTeamCreateHandler completion = ^(NSError * __nullable error,
NSString * __nullable teamId,
NSArray<NSString *> * __nullable failedUserIds)
{
if (error == nil) {
/// A group is created successfully
NSLog(@"[Create team succeeded, teamId: %@]", teamId);
/// your code ...
} else {
/// Failed to create a group
NSLog(@"[NSError message: %@]", error);
}
};
/// Create a group
[[[NIMSDK sharedSDK] teamManager] createTeam:option users:users completion:completion];
Join a group
You can join a group using the following methods:
- Accepts the invitation to join a group.
- Request to join a group
Invite users to join a group
The permission to invite to the group can be defined by InviteMode
. If you set the value to NIMTeamInviteModeManager
, only the group owner and administrator can invite people to join a group. The NIMTeamInviteModeAll
allows all members in the group can invite people to join the group.
Invite other users to the group by calling addUsers:toTeam:postscript:attach:completion:
.
- If the invitation mode
beInviteMode
of the group isNIMTeamBeInviteModeNoAuth
, users can join the group without verification. - If the invitation mode
beInviteMode
of the group is set toNIMTeamBeInviteModeNeedAuth
, the invited user must agree to join the group.
If an invited member has reached the upper limit of joined groups, the accounts failing to join the group are returned.
Parameters:
Parameter | Description |
---|---|
teamId | group ID |
users | Accounts to be invited. |
attach | Custom extension field. Ignore the extension if not required. The field can contain up to 512 characters. |
postscript | additional message for invitation. Ignore it if not required. |
completion | Callback for completion |
- After the invitation is sent, the invited user will receive a
NIMSystemNotification
system notification ofNIMSystemNotificationTypeTeamInvite
type. In the notification, you can get the ID of the inviter, the ID of the group, and the additional message attached to the invitation. - The invited user can call
acceptInviteWithTeam
to accept the invitation to join the group. All group members will receive a notification ofNIMMessageTypeNotification
type and the trigger event isNIMTeamOperationTypeAcceptInvitation
| - The invited user can also call the
rejectInviteWithTeam
method to reject the invitation. If the invited user rejects the invitation, the user will receive a system notificationNIMSystemNotification
ofNIMSystemNotificationTypeTeamApplyReject
type.
** Sample code:**
/// users List of accounts to be invited
NSArray<NSString *> *users = [NSArray arrayWithObjects:@"ios01", @"ios02", nil];
/// teamId Group ID
NSString *teamId = @"6271272396";
/// postscript additional message, optional
NSString *postscript = @” invite you to join the group";
/// attach extension message, optional
NSString *attach = @"extension message";
/// completion Callback for completion
NIMTeamMemberHandler completion = ^(NSError * __nullable error, NSArray<NIMTeamMember *> * __nullable members)
{
if (error == nil) {
/// `members` The list of members that join a group successfully
NSLog(@"[Add %lu users to team: %@ succeed]", (unsigned long)[members count], teamId);
/// your code ...
} else {
/// Failed to join the group
NSLog(@"[NSError message: %@]", error);
}
};
/// Invite users to join a group
[[[NIMSDK sharedSDK] teamManager] addUsers:users
toTeam:teamId
postscript:postscript
attach:attach
completion:completion];
//Accept an invitation
NSString *teamId = @"6271272396";
/// invitorId The ID of a member sending the invitation
NSString *invitorId = @"ios02";
/// completion Callback for completion
NIMTeamHandler completion = ^(NSError * __nullable error)
{
if (error == nil) {
/// Join a group by accepting the invitation
NSLog(@"[Accept invite of invitor: %@ in team: %@ succeed.]", invitorId, teamId);
/// your code ...
} else {
/// Failed to join a group
NSLog(@"[NSError message: %@]", error);
}
};
/// Accept an invitation to join a group
[[[NIMSDK sharedSDK] teamManager] acceptInviteWithTeam:teamId
invitorId:invitorId
completion:completion];
//Reject the invitation
NSString *teamId = @"6271272396";
/// invitorId The ID of a member sending the invitation
NSString *invitorId = @"ios02";
/// rejectReason Reason for rejecting the invitation
NSString *rejectReason = @"Do not want to join the group";
/// completion Callback for completion
NIMTeamHandler completion = ^(NSError * __nullable error)
{
if (error == nil) {
/// Reject a join group request
NSLog(@"[Reject invite of invitor: %@ in team: %@ succeed.]", invitorId, teamId);
/// your code ...
} else {
/// Failed to reject a join group request
NSLog(@"[NSError message: %@]", error);
}
};
/// Reject an invitation to join a group
[[[NIMSDK sharedSDK] teamManager] rejectInviteWithTeam:teamId
invitorId:invitorId
rejectReason:rejectReason
completion:completion];
Request to join a group
Request to join a group by calling applyToTeam:message:completion:
.
- If the option for
joinMode
isNIMTeamJoinModeNoAuth
, users can join the group without verification. - If the option for
joinMode
is set toNIMTeamJoinModeNeedAuth
, the group owner or administrators must approve the request to join the group. - If the option for
joinMode
isNIMTeamJoinModeRejectAll
, the group does not accept requests. Users can only join the group by invitation.
Parameters:
Parameter | Description |
---|---|
teamId | group ID |
message | Additional message for a request |
completion | Callback for completion |
- If a user send a join request, the group owner and administrators will receive a
NIMSystemNotification
system notification ofNIMSystemNotificationTypeTeamApply
type. - The group owner and administrators can approve the request by calling
passApplyToTeam
. All group members will receive a notification ofNIMMessageTypeNotification
type and the trigger event isNIMTeamOperationTypeApplyPass
| - The group owner and administrators can also call the
rejectApplyToTeam
method to reject the request. If the invited user rejects the invitation, the user will receive a system notificationNIMSystemNotification
ofNIMSystemNotificationTypeTeamApplyReject
type.
** Sample code:**
NSString *teamId = @"6271272396";
/// message Additional message for a request
NSString *message = @"I want to join the group";
/// completion Callback for completion
NIMTeamApplyHandler completion = ^(NSError * __nullable error, NIMTeamApplyStatus applyStatus)
{
if (error == nil) {
/// Success
NSLog(@"[Apply to team: %@ succeed, apply status: %ld]", teamId,(long)applyStatus);
/// your code ...
} else {
/// Failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Request to join a group
[[[NIMSDK sharedSDK] teamManager] applyToTeam:teamId
message:message
completion:completion];
// Approve the request
NSString *teamId = @"6271272396";
/// userId The ID of a user send a request
NSString *userId = @"ios02";
/// completion Callback for completion
NIMTeamApplyHandler completion = ^(NSError * __nullable error, NIMTeamApplyStatus applyStatus)
{
if (error == nil) {
/// Success
NSLog(@"[Pass apply in team: %@ of user: %@ succeed, apply status: %ld]", teamId, userId, (long)applyStatus);
/// your code ...
} else {
/// Failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Approve a request
[[[NIMSDK sharedSDK] teamManager] passApplyToTeam:teamId
userId:userId
completion:completion];
// Reject the request
NSString *teamId = @"6271272396";
/// userId The ID of a user send a request
NSString *userId = @"ios02";
/// rejectReason Reason for rejecting a request
NSString *rejectReason = @"decline the request";
/// completion Callback for completion
NIMTeamHandler completion = ^(NSError * __nullable error)
{
if (error == nil) {
/// Operation success
NSLog(@"[Reject apply in team: %@ of user: %@ succeed]", teamId, userId);
/// your code ...
} else {
/// Operation failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Reject a request
[[[NIMSDK sharedSDK] teamManager] rejectApplyToTeam:teamId
userId:userId
rejectReason:rejectReason
completion:completion];
Transfer the ownership of a group
Only the group owner has the permission to transfer the ownership of a group.
Transfer the ownership of a group by calling transferManagerWithTeam:newOwnerId:isLeave:completion:
.
- After the ownership of the group is transferred. All group members will receive a notification of
NIMMessageTypeNotification
and the trigger event isNIMTeamOperationTypeTransferOwner
. - If the group owner leaves the group while transferring the ownership, call
quitTeam
to leave the group. All group members will receive a notification ofNIMMessageTypeNotification
type and the trigger event isNIMTeamOperationTypeLeave
| - After the user successfully leaves the group, the relevant session information will still be retained, but the messages from this group will no longer be received.
Parameters:
Parameter | Description |
---|---|
teamId | Group ID |
newOwnerIdt | Account of the new owner |
isLeave | Whether to leave the group while transferring the group true: leave the group. false: do not leave the group and the role becomes a regular group member |
completion | Callback for completion |
** Sample code:**
NSString *teamId = @"6271272396";
/// newOwnerId The ID of the new group owner
NSString *newOwnerId = @"ios02";
/// Whether the original group owner leaves the group
BOOL isLeave = YES;
NIMTeamHandler completion = ^(NSError * __nullable error)
{
if (error == nil) {
/// Success
NSLog(@"[Transfer manager to new owner: %@ succeed.]", newOwnerId);
/// your code ...
} else {
/// Failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Transfer the ownership of a group
[[[NIMSDK sharedSDK] teamManager] transferManagerWithTeam:teamId
newOwnerId:newOwnerId
isLeave:isLeave
completion:completion];
Leave a group
You can leave a group using the following methods:
- You are removed by the group owner or group administrator.
- You leave the group.
Remove a member from a group
- Only the owner and moderators can remove members from the group.
- Administrators cannot remove group owners or other administrators from a group.
Remove a member from a group by calling the kickUsers:fromTeam:completion:
method.
- After a member is removed, all group members will receive a notification of
NIMMessageTypeNotification
type and the trigger event isNIMTeamOperationTypeKick
. - After the user successfully is removed the group, the relevant session information will still be retained, but the messages from this group will no longer be received.
Parameters:
Parameter | Description |
---|---|
teamId | group ID |
users | The members to be removed. |
completion | Callback for completion |
** Sample code:**
/// users The members to be removed
NSArray<NSString *> *users = [NSArray arrayWithObjects:@"ios02", nil];
/// teamId Group ID
NSString *teamId = @"6271272396";
/// completion Callback for completion
NIMTeamHandler completion = ^(NSError * __nullable error)
{
if (error == nil) {
/// Operation success
NSLog(@"[Kick users from team: %@ succeed]", teamId);
/// your code ...
} else {
/// Operation failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Remove a member from a group
[[[NIMSDK sharedSDK] teamManager] kickUsers:users
fromTeam:teamId
completion:completion];
Leave a group
Leave a group by calling the quitTeam:completion:
method.
- Except the group owner, all other members can leave a group. Aftare a member leaves a group, all group members will receive a notification of
NIMMessageTypeNotification
type and the trigger event isNIMTeamOperationTypeLeave
. - After the user successfully leaves the group, the relevant session information will still be retained, but the messages from this group will no longer be received.
** Sample code:**
/// teamId Group ID
NSString *teamId = @"6271272396";
/// completion Callback for completion
NIMTeamHandler completion = ^(NSError * __nullable error)
{
if (error == nil) {
/// Operation success
NSLog(@"[Quit team succeeded, teamId: %@]", teamId);
/// your code ...
} else {
/// Operation failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Leave a group. Note: the group owner must transfer the ownership of the group owner before leaving.
[[[NIMSDK sharedSDK] teamManager] quitTeam:teamId
completion:completion];
Dismiss a group
Only the group owner have the permission to dismiss a group.
Dismiss a group by calling the dismissTeam:completion:
method.
After a group is dismissed, all group members will receive a notification of NIMMessageTypeNotification
type and the trigger event is NIMTeamOperationTypeDismiss
.
After the group is dismissed, all conversations about this group will be retained, but all members cannot send and receive messages in this group chat.
** Sample code:**
/// teamId Group ID
NSString *teamId = @"6271321659";
/// completion Callback for completion
NIMTeamHandler completion = ^(NSError * __nullable error)
{
if (error == nil) {
/// Operation success
NSLog(@"[Dismiss team succeeded, teamId: %@]", teamId);
/// your code ...
} else {
/// Operation failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Dismiss a group
[[[NIMSDK sharedSDK] teamManager] dismissTeam:teamId
completion:completion];
Edit the group profile
Members must have permissions for editing group profiles. If the edit permission of the group profile (updateInfoMode
) is set to NIMTeamUpdateInfoModeManager
, only the group owner and administrators can edit the group profile. If the value is set to NIMTeamUpdateInfoModeAll
, all group members can edit the group information.
Editable group attributes: group name, group avatar, introduction, announcement, verification method, invitation mode, acceptance mode, mute mode, edit permission, edit permission for custom information, and custom information.
If a user update the group information, all group members will receive a notification of NIMMessageTypeNotification
type and the trigger event is NIMTeamOperationTypeUpdate
.
Edit the field of a group profile
Methods used to update group properties.
Attribute | Method | Description |
---|---|---|
Group name | updateTeamName:teamId:completion: |
- |
Group avatar | updateTeamAvatar:teamId:completion: |
Set the avatar of a group. If the avatar resource is uploaded to the CommsEase server, use the NOS service |
Group Introduction | updateTeamIntro:teamId:completion: |
- |
Announcement | updateTeamAnnouncement:teamId:completion: |
- |
Verification method | updateTeamJoinMode:teamId:completion: verification methodNIMTeamJoinModeNoAuth: No authentication is required. Everyone is allowed to join a group NIMTeamJoinModeNeedAuth: The verification is required to join a group NIMTeamJoinModeRejectAll: No one is allowed to join a group. |
|
Acceptance mode | updateTeamBeInviteMode:teamId:completion: |
NIMTeamBeInviteModeNoAuth: No verification required NIMTeamBeInviteModeNeedAuth: The verification from the invited people is required |
Invitation mode | updateTeamInviteMode:teamId:completion: |
NIMTeamInviteModeManager: only the group owner and administrators can invite people to join a group. NIMTeamInviteModeAll: everyone in the group can invite people to join the group |
The permission to edit group information | updateTeamUpdateInfoMode:teamId:completion: |
NIMTeamUpdateInfoModeManager: Only the group owner and administrators can edit the group information NIMTeamUpdateInfoModeAll·: Everyone can edit the group information. |
Permission to edit the client custom group information | updateTeamUpdateClientCustomMode:teamId:completion: |
NIMTeamUpdateClientCustomModeManager: administrators have the permission. NIMTeamUpdateClientCustomModeAll : everyone has the permission. |
Group Custom Information | updateTeamCustomInfo:teamId:completion: |
The SDK provides an extension interface for group information. You can add custom information for groups. |
The following sample code is ued to edit the group name.
/// teamName The group name to be updated
NSString *teamName = @"updated group name";
/// teamId The ID of a group whose name is to be updated
NSString *teamId = @"6271272396";
/// completion Callback for completion
NIMTeamHandler completion = ^(NSError * __nullable error)
{
if (error == nil) {
/// Operation success
NSLog(@"[Update team name to: %@ succeed]", teamName);
/// your code ...
} else {
/// Operation failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Update the name of a group
[[[NIMSDK sharedSDK] teamManager] updateTeamName:teamName
teamId:teamId
completion:completion];
Edit multiple fields of a group profile
Edit multiple fields of a group profile by calling the updateTeamInfos:teamId:completion:
method.
Parameters:
Parameter | Description |
---|---|
teamId | group ID |
Values | Group properties to be updated. |
completion | Callback for completion |
The key-value pair arguments {@(NIMTeamUpdateTag) : NSString}
. Invalid data will be filtered. For more information, see NIMTeamUpdateTag
.
** Sample code:**
NSDictionary<NSNumber *,NSString *> *values = @{
@(NIMTeamUpdateTagName):@"group name",
@(NIMTeamUpdateTagIntro):@"introduction",
@(NIMTeamUpdateTagAnouncement):@"announcement"
};
/// teamId Group ID
NSString *teamId = @"6271272396";
/// completion Callback for completion
NIMTeamHandler completion = ^(NSError * __nullable error)
{
if (error == nil) {
/// Operation success
NSLog(@"[Update team infos to: %@ succeed]", values[@(NIMTeamUpdateTagName)]);
/// your code ...
} else {
/// Operation failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Update the group profile
[[[NIMSDK sharedSDK] teamManager] updateTeamInfos:values
teamId:teamId
completion:completion];
Interface:
Edit the local group profile
Edit the local group information by calling the updateTInfosLocal:
method. The updated group information will not be synchronized to the server.
** Sample code:**
/// updateTInfosLocal works with services that fetch group information, such as searchTeamWithOption: and fetchTeamsWithTimestamp:completion:
/// option Query option: You can set the option to id(01) or name(10) or id|name(11); and set the search content
NIMTeamSearchOption *option = [NIMTeamSearchOption new];
/// Set the group ID for search
[option setSearchContentOption:NIMTeamSearchContentOptiontId];
/// Set the search content to @"6271272396"
[option setSearchContent:@"6271272396"];
/// completion Callback for completion
NIMTeamSearchHandler completion = ^(NSError * __nullable error, NSArray<NIMTeam *> * __nullable teams)
{
if (error == nil) {
/// Query success. The result includes a list of teams
NSLog(@"[Search team with option %@ total %ld team(s) succeed.]", [option searchContent], [teams count]);
///=================================================
/// teams List of groups to be updated
NSArray<NIMTeam *> *updateTeams = teams;
/// Update group local information
BOOL didUpdate = [[[NIMSDK sharedSDK] teamManager] updateTInfosLocal:updateTeams];
///=================================================
NSLog(@"[Update team info result: %@.]", didUpdate ? @"YES" : @"NO");
} else {
/// Query failed
NSLog(@"[NSError message: %@]", error);
}
/// Query group information
[[[NIMSDK sharedSDK] teamManager] searchTeamWithOption:option
completion:completion];
};
Query group information
The NIM SDK will synchronize the local group information when the app starts. You can the local cache interface to get the group information.
The SDK allows users to get information about all groups you have joined, and query a specified group by group ID. The SDK also provides an interface for obtaining group information from the server.
Query information about all groups the current user has joined
Retrieve information about all groups from the server by calling the fetchTeamsWithTimestamp:completion:
method and persists the data on the local storage.
Parameters:
Parameter | Description |
---|---|
timestamp | A value of 0 indicates that information about all groups are retrieved. |
block | Callback for completion |
** Sample code:**
/// timeInterval A value of 0 indicates that information about all groups are retrieved.
NSTimeInterval timeInterval = 0;
/// completion Callback for completion
NIMTeamFetchTeamsHandler completion = ^(NSError * __nullable error, NSArray<NIMTeam *> * __nullable teams)
{
if (error == nil) {
/// Operation success
NSLog(@"[Fetch %lu teams with timestamp.]", [teams count]);
} else {
/// Operation failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Retrieve information about all groups
[[[NIMSDK sharedSDK] teamManager] fetchTeamsWithTimestamp:timeInterval
completion:completion];
Query all groups the current user has joined in the local database.
Query all groups the current user has joined in the local database by calling the allMyTeams
method.
Sample code:
/// teams All groups the current user has joined
NSArray<NIMTeam*> *teams = [[[NIMSDK sharedSDK] teamManager] allMyTeams];
Query a specified group by group ID
Query a specified group by calling the teamById
method.
Call this method on the main thread. Otherwise, the app may crash or data may lose during read and write operations.
Sample code:
/// teamId Group ID
NSString *teamId = @"6121310012";
/// team contains specific group information for the group ID. If you are not in the group, this interface returns nil
NIMTeam *team = [[[NIMSDK sharedSDK] teamManager] teamById:teamId];
** Local storage of group information in the SDK:**
When dismissing a group, leaving the group or being removed from the group, the local database will continue to retain the group information. If the user manually clears all local data, the server will not synchronize the invalid group data during the next login synchronization, and the information about the group the user has left will not be obtained.
Query a specified group from the server
- Retrieve the information about a specificed group by calling the
fetchTeamInfo:completion:
method. Sample code:
/// teamId Grouo ID
NSString *teamId = @"6271272396";
/// completion Callback for completion
NIMTeamFetchInfoHandler completion = ^(NSError * __nullable error, NIMTeam * __nullable team)
{
if (error == nil) {
/// Operation success
NSLog(@"[Fetch teamId:%@’s infomation: %@ succeed.]", teamId, [team teamName]);
/// your code ...
} else {
/// Operation failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Get the data of a group member
[[[NIMSDK sharedSDK] teamManager] fetchTeamInfo:teamId
completion:completion];
If you have joined the queried group, the locally cached group data will be updated.
- Retrieve the information about multiple groups from the server by calling the
fetchTeamInfoList:completion:
method. Sample code:
/// Array of group IDs
NSArray<NSString *> *teamsId = [NSArray arrayWithObjects:@"6271272396", nil];
/// completion Callback for completion
NIMTeamFetchTeamInfoListHandler completion = ^(NSError * __nullable error,
NSArray<NIMTeam *> * __nullable teams,
NSArray<NSString *> * __nullable failedTeamIds)
{
if (error == nil) {
/// Operation success
NSLog(@"[Fetch %lu teams succeeded, %lu failed in total.]", [teams count], [failedTeamIds count]);
} else {
/// Operation failure
NSLog(@"[NSError message: %@]", error);
}
};
/// Get the information about multiple groups
[[[NIMSDK sharedSDK] teamManager] fetchTeamInfoList:teamsId
completion:completion];
- If more than 10 elements exist in the array, the first 10 elements will be taken.
- The group information retrieved from the server are not persisted locally.
Group search
Search groups with keywords by calling the searchTeamWithOption:completion:
method.
NIMTeamSearchOption
representation:
Parameter | Description |
---|---|
searchContentOption | The matching option is NIMTeamSearchContentOption |
ignoreingCase | Whether to ignore the casing, YES by default. |
searchContent | Keyword for search. |
NIMTeamSearchContentOption
enumeration:
typedef NS_OPTIONS(NSInteger, NIMTeamSearchContentOption ) {
// Search group names
NIMTeamSearchContentOptiontName = 1 < < 0,
// Search group IDs
NIMTeamSearchContentOptiontId = 1 < < 1,
// Search group names and IDs
NIMTeamSearchContentOptionTeamAll = NIMTeamSearchContentOptiontName | NIMTeamSearchContentOptiontId,
};
Sample code:
/// option Query option: You can set the option to id(01) or name(10) or id|name(11); and set the search content
NIMTeamSearchOption *option = [NIMTeamSearchOption new];
/// Set the group ID for search
[option setSearchContentOption:NIMTeamSearchContentOptiontId];
/// Set the search content to @"6271272396"
[option setSearchContent:@"6271272396"];
/// completion Callback for completion
NIMTeamSearchHandler completion = ^(NSError * __nullable error, NSArray<NIMTeam *> * __nullable teams)
{
if (error == nil) {
/// Query success. The result includes a list of teams
NSLog(@"[Search team with option %@ total %ld team(s) succeed.]", [option searchContent], [teams count]);
/// your code ...
} else {
/// Query failed
NSLog(@"[NSError message: %@]", error);
}
};
/// Query group information
[[[NIMSDK sharedSDK] teamManager] searchTeamWithOption:option
completion:completion];
API reference
API |
Description |
---|---|
addDelegate: |
Add listeners for group events. |
removeDelegate: |
Remove listeners for group events |
createTeam |
Create a group. |
addUsers |
Invite to join a group. |
acceptInviteWithTeam |
Accept an invitation to join a group. |
rejectInviteWithTeam |
Reject an invitation to join a group. |
applyToTeam |
Request to join a group |
passApplyToTeam |
Approve the request to join a group. |
rejectApplyToTeam |
Reject a request to join a group. |
kickUsers |
Remove a member from a group. |
quitTeam |
Leave a group. |
transferManagerWithTeam |
Transfer the ownership of a group. |
dismissTeam |
Dismiss a group. |
updateTeamName |
Edit the name of a group. |
updateTeamAvatar |
Edit the avatar of a group. |
updateTeamIntro |
Edit the introduction of a group. |
updateTeamAnnouncement |
Edit the announcement of a group. |
updateTeamJoinMode |
Change the verification method. |
updateTeamBeInviteMode |
Change the acceptance method for invitations. |
updateTeamInviteMode |
Change the invite permission |
updateTeamUpdateInfoMode |
Change the permission for editing group information. |
updateTeamUpdateClientCustomMode |
Change the permission for editing the custom information about a group. |
updateTeamCustomInfo |
Edit the custom information about a group. |
updateTeamInfos |
Edit multiple fields of a group profile. |
updateTInfosLocal |
Edit the local group profile |
fetchTeamsWithTimestamp |
Retreive information about multiple groups from the server. |
allMyTeams |
Query all groups the current user has joined in the local database. |
teamById |
Query a specified group by group ID in the local database. |
fetchTeamInfo |
Query a specified group from the server. |
fetchTeamInfoList |
Query specified groups from the server |
searchTeamWithOption |
Search groups with keywords. |