Chat Room
Update time: 2022/09/02 09:54:46
Read the chat room FAQRead the Chat room FAQ before developing the chat room feature to get a general idea about the feature.
Features of Chat Room
Chat Room Features:
- If a user enters a chat room, the new connection must be created. If the user leaves or is removed from the chat room, the connection will be disabled. If the user is disconnected from chat room, automatic re-connection will be executed. Developers need to track connection status of chat room to make the correct interface action.
- The number of online members in a chat room is not limited.
- A user is allowed to enter multiple chat rooms and create multiple connections.
- Chat room does not support multi-terminal login, so currently logged in client will be kicked out if another client logs in.
- After disconnecting from a chat room, the user will no longer receive messages related to the chat room from the server.
- The chat room members include fixed members and guests.
- At present, server control supports simultaneous entry to up to 10 chat rooms, so when logging into the 11th room, the client will be kicked out from one of the 10 previous rooms.
All events and callbacks for the chat room are not handled in the main thread. To handle UI elements, tasks will be thrown to the main thread.
Initialization and Clearup
To use chat room features, you must perform initialization by calling NIMChatRoom.ChatRoomApi.Init()
,and perform cleanup by calling NIMChatRoom.ChatRoomApi.Cleanup()
before exiting the feature. The two operations must be used in pairs. Otherwise, exceptions may occur.Cleanup()` .
We recommend you make a global call of NIMChatRoom.ChatRoomApi.Init()
once
Notification of Chat Room Event
Login, logout, message reception, and other operations in the chat room are all notified to the caller by monitoring global events. You must monitor all chat room event notifications before calling a login operation. It is recommended to register event monitoring upon completion of initialization.
To rejoin a chat room, you must wait until you have left the chat room.
Chat Room Login Event
After calling the chat room login interface, the developer is notified of the login progress and result through this event. The login process has 5 steps: local service initialization, server connection, server connection establishment, login authentication, login authenticated, and When login authentication is completed, you can get the information of the current chat room and your chat room member information.
NIMChatRoomLoginStep
Enumeration description
Enumeration | Value | Description |
---|---|---|
kNIMChatRoomLoginStepInit | 1 | Local service initialization |
kNIMChatRoomLoginStepServerConnecting | 2 | Server connecting |
kNIMChatRoomLoginStepServerConnectOver | 3 | End of server connection, connection result is error_code |
kNIMChatRoomLoginStepRoomAuthing | 4 | Chat room in authentication |
kNIMChatRoomLoginStepRoomAuthOver | 5 | End of chat room authentication, the result of which is shown in error_code, if the error_code is not 408, the developer needs to request again the chat room login information |
- API prototype
public static event ChatRoomLoginDelegate LoginHandler;
- Example
void OnLoginHandler(NIMChatRoomLoginStep loginStep, ResponseCode errorCode, ChatRoomInfo roomInfo, MemberInfo memberInfo)
{
//roomInfo,memberInfo can be assigned null. You must check for null. Otherwise, NullReferenceException will be thrown and the callback thread error occurs.
if (loginStep == NIMChatRoom.NIMChatRoomLoginStep.kNIMChatRoomLoginStepRoomAuthOver
&& errorCode == NIM.ResponseCode.kNIMResSuccess)
{
//Successfully entered the chat room
}
if (errorCode != NIM.ResponseCode.kNIMResSuccess)
{
//Error occurs when entering the chat rooms
}
}
//Monitor login event
NIM.NIMChatRoom.ChatRoomApi.LoginHandler += OnLoginHandler;
//Cancel monitoring
NIM.NIMChatRoom.ChatRoomApi.LoginHandler -= OnLoginHandler;
ExitChatRoom Event
Notification for leaving chat room. Other than being kicked out by other client, host and manager, notification for exiting a chat room will also appear when the chat room is closed or dismissed. After receiving the notification, the chat participant won't automatically reconnect with the chat room. Logging in again requires [getting the token](/en/docs/TM5MzM5Njk/jE1NDM1MTA# Get the token) again.
NIMChatRoomExitReason
Enumeration parameter description
Enumeration | Value | Description |
---|---|---|
kNIMChatRoomExitReasonExit | 0 | In case of active logout, you must send a re-login request before you login again |
kNIMChatRoomExitReasonRoomInvalid | 1 | The chat room has been dismissed, you must send a re-login request before you login again |
kNIMChatRoomExitReasonKickByManager | 2 | Kicked out by the manager, you must send a re-login request before you login again |
kNIMChatRoomExitReasonKickByMultiSpot | 3 | Kick-out during multi-terminal login |
kNIMChatRoomExitReasonIllegalState | 4 | Status exception of current link |
kNIMChatRoomExitReasonBeBlacklisted | 5 | Blacklisted by the manager |
- API prototype
public static event ExitChatRoomDelegate ExitHandler;
- Example
void OnExitHandler(long roomId, ResponseCode errorCode, NIMChatRoomExitReason reason)
{
...
}
//Monitor event
NIM.NIMChatRoom.ChatRoomApi.ExitHandler += OnExitHandler;
//Cancel monitoring
NIM.NIMChatRoom.ChatRoomApi.ExitHandler -= OnExitHandler;
Chat Room Connection Status Change Notification
Notify the developer of the connection status of the chat room when the room is disconnected due to network fluctuations. SDK monitors network status and automatically reconnects when possible.
NIMChatRoomLinkCondition
Enumeration parameter description
Enumeration | Value | Description |
---|---|---|
kNIMChatRoomLinkConditionAlive | 0 | Normal connection |
kNIMChatRoomLinkConditionDeadAndRetry | 1 | Connection failed, reconnecting |
kNIMChatRoomLinkConditionDead | 2 | Developer needs to re-apply for chat room login information |
- API prototype
public static event LinkStateChangedDelegate LinkStateChanged;
- Example
void OnLinkStateChanged(long roomId, NIMChatRoomLinkCondition state)
{
...
}
//Monitor event
NIM.NIMChatRoom.ChatRoomApi.LinkStateChanged += OnLinkStateChanged;
//Cancel monitoring
NIM.NIMChatRoom.ChatRoomApi.LinkStateChanged -= OnLinkStateChanged;
Receive Message Event
Received a chat room message, the content of which isMessage
. This notification event covers messages from multiple chat room,roomId
can be used to distinguish between chat rooms. Local storage is not available for all chat room messages
NIMChatRoomMsgType
Enumeration description
Enumeration | Value | Description |
---|---|---|
kNIMChatRoomMsgTypeText | 0 | Text message |
kNIMChatRoomMsgTypeImage | 1 | Image message |
kNIMChatRoomMsgTypeAudio | 2 | Audio message |
kNIMChatRoomMsgTypeVideo | 3 | Video message |
kNIMChatRoomMsgTypeLocation | 4 | Location message |
kNIMChatRoomMsgTypeNotification | 5 | Activity room notification |
kNIMChatRoomMsgTypeFile | 6 | File message |
kNIMChatRoomMsgTypeTips | 10 | Reminder message |
kNIMChatRoomMsgTypeRobot | 11 | Baud robot message |
kNIMChatRoomMsgTypeCustom | 100 | Custom message |
kNIMChatRoomMsgTypeUnknown | 1000 | Unknown type of message, it is the default value |
Message
Description of key parameters
Type | Parameter | Description |
---|---|---|
long | RoomId | ID of the chat room the message belongs to (filled out by server) |
string | SenderId | Message sender |
long | TimeStamp | Timestamp of message sending (in milliseconds) (filled out by server) |
NIMChatRoomClientType | SenderClientType | Sender's client type, filled out by server, no operation required for sender |
string | SenderNickName | Sender's nickname (filled out by server) |
string | SenderAvator | Sender's avatar (filled out by server) |
string | SenderExtension | Sender's identity extension field (filled out by server) |
NIMChatRoomMsgType | MessageType | Message type, see NIMChatRoomMsgTypefor details |
string | MessageAttachment | Message content, with a length limit of 2048, if it is agreed to be a JSON string, it must be an unformatted string that can be parsed as JSON. In addition to text messages, images, audios, videos, geographic locations, and custom messages also need to be JSON strings of the currently agreed format. This content is for transparent transmission and essentially the attachment content of theIM message. Refer to the corresponding message type in "sending message". |
string | ClientMsgId | Client message id, filled out by sender |
bool | resend_flag | Whether resending message is needed, true: needed, false: not needed, the default is false (not yet supported) |
string | Extension | Third-party extension field, with a length limited to 4096, must be an unformatted string that can be parsed as JSON |
bool | AntiSpamEnabled | Whether to enable YiDun anti-spam filtration. "True" is to enable, and "false" is not to enable. The value is "false" by default. |
string | AntiSpamContent | (Optional) Developer-defined anti-spam field, with a length limit of 5000 characters |
string | LocalResourcePath | The local absolute path of the media file (client side) (not yet supported) |
string | LocalResourceId | ID of local media file (client side) (not yet supported) |
- API prototype
public static event ReceiveMessageDelegate ReceiveMessageHandler;
- Example
void OnRecvMessage(long roomId, Message message)
{
...
}
//Monitor event
NIM.NIMChatRoom.ChatRoomApi.ReceiveMessageHandler += OnRecvMessage;
//Cancel monitoring
NIM.NIMChatRoom.ChatRoomApi.ReceiveMessageHandler -= OnRecvMessage;
Notification of Message Sending Result
This event informs the user whether the message is sent.
- API prototype
public static event SendMessageDelegate SendMessageHandler;
- Example
void OnSendMessageResult(long roomId, ResponseCode code, Message message)
{
...
}
//Monitor event
NIM.NIMChatRoom.ChatRoomApi.SendMessageHandler += OnSendMessageResult;
//Cancel monitoring
NIM.NIMChatRoom.ChatRoomApi.SendMessageHandler -= OnSendMessageResult;
Event of Receiving Chat Room Notification
All chat room notification messages are received through this event. Including members entering/leaving chat room, mute/unmute, add to/remove from blacklist, etc. SeeNotification
for details.
Notification
Parameter description
Type | Parameter | Description |
---|---|---|
NIMChatRoomNotificationId | Type | For Notification type, see NIMChatRoomNotificationId . |
Notification.Data | InnerData | Notification content |
NIMChatRoomNotificationId
Enumeration description
Enumeration value | Description |
---|---|
kNIMChatRoomNotificationIdMemberIn | Members enter a chat room |
kNIMChatRoomNotificationIdMemberExit | Members exit from a chat room |
kNIMChatRoomNotificationIdAddBlack | Blacklist members |
kNIMChatRoomNotificationIdRemoveBlack | Unblacklist a member. |
kNIMChatRoomNotificationIdAddMute | Mute a member |
kNIMChatRoomNotificationIdRemoveMute | Unmute a member |
kNIMChatRoomNotificationIdAddManager | Designate a manager |
kNIMChatRoomNotificationIdRemoveManager | Undo the designation of a manager. |
kNIMChatRoomNotificationIdAddFixed | Set as fixed chat room member |
kNIMChatRoomNotificationIdRemoveFixed | Undo the designation of fixed chat room members |
kNIMChatRoomNotificationIdClosed | Disable a chat room |
kNIMChatRoomNotificationIdInfoUpdated | Update the information of a chat room |
kNIMChatRoomNotificationIdMemberKicked | Kick a member out of a chat room |
kNIMChatRoomNotificationIdMemberTempMute | Temporary mute |
kNIMChatRoomNotificationIdMemberTempUnMute | Terminate temporary muting |
kNIMChatRoomNotificationIdMyRoleUpdated | Chat room members update personal information in the chat room. The information only includes nick, avator, and ext. |
kNIMChatRoomNotificationIdRoomMuted | When a chat room is muted, only the manager can send messages. |
kNIMChatRoomNotificationIdRoomDeMuted | Unmute all chat room members. |
Let’s see description for the parameter ``Notification.Data`
Type | Parameter | Description |
---|---|---|
string | Extension | Extension field of event notification customed by developer-defined, must be an unformatted string that can be parsed as JSON |
string | OperatorId | The account ID of the operator |
string | OperatorNick | The nickname of the operator |
string[] | TargetAccountsNick | The nickname list of target members |
string[] | TargetIdCollection | The account ID list of operators |
long | MuteDuration | When the notification is related to temporary mute, the value can be found. If mute is executed, it means mute duration (s); if mute is canceled, it means remaining mute duration (s). |
int | Muted | If according to notification type, this value is available upon member entry, then it indicates whether the member is muted, 1: muted, 0: not muted (default) |
int | TempMuted | If according to notification type, this value is available upon member speaking, then it indicates temporary mute status |
long | TempMutedDuration | When the notification type is member access, it means temporary mute duration (s), and other notifications exclude the data. |
- API prototype
public static event ReceiveNotificationDelegate ReceiveNotificationHandler;
- Example
void OnReceiveNotificationHandler(long roomId, Notification notification)
{
...
}
//Monitor event
NIM.NIMChatRoom.ChatRoomApi.ReceiveNotificationHandler += OnReceiveNotificationHandler;
//Cancel monitoring
NIM.NIMChatRoom.ChatRoomApi.ReceiveNotificationHandler -= OnReceiveNotificationHandler;
Enter A Chat Room
Get Token
The chat room relies on IM. Before entering a chat room, you must get authorization information required for entering the room by calling the IM module interface, and this information is input into the chat room login when it is called by the developer. You can log in to multiple chat rooms at the same time, but each chat room requires different authorization information, depending on itsroomId
.
Note: The interface called here belongs to IM SDK module.
- API prototype
public static void RequestLoginInfo(long roomId, RequestChatRoomLoginInfoDelegate cb,string json_ext="");
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
cb | Result notification callback |
json_ext | Extension information, reserved |
- API example
//Take test room 3001 as an example
long roomId = 3001;
string _token = "";
NIM.Plugin.ChatRoom.RequestLoginInfo(roomId, (response, authResult) =>
{
if (response == NIM.ResponseCode.kNIMResSuccess)
{
_token = result; //This token is the required authorization information
//If NIMChatRoom.ChatRoomApi.Login is invoked directly, an asynchronous task shall be thrown as much as possible to execute the operation as follows:
Loom.QueueOnMainThread (() => {
LoginData loginData = new LoginData();
loginData.Nick = "nickName";
loginData.Icon = "https://xxxx.png";//Image url
loginData.Extension = "{\"myExt\:\"111\"}";
loginData.NotifyExtension = "{\"myNotifyExt\:\"2222\"}";
NIMChatRoom.ChatRoomApi.Login(roomId,_token,loginData);
});
}
});
Log in to Chat Room
When entering the chat room, you can useLoginData
to set your nickname, avatar in the chat room, and deliver notification information and extension information, etc. The developer is informed of the login process through the log-in chat room event.
LoginData
Parameter description
Type | Parameter | Description |
---|---|---|
string | Nick | Nickname displayed after entering the chat room, optionals |
string | Icon | Avatar in the chat room, filled out with the url of the avatar, optional |
string | Extension | Extension field information, must be a json string, optional |
string | NotifyExtension | Notification extension field for chat room entry, must be a json string, optional |
- API prototype
public static void Login(long roomId, string request, LoginData loginData = null);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
request | Get the authorization information by the interface of [Get the token](/en/docs/TM5MzM5Njk/jE1NDM1MTA#Get the token). Required. |
loginData | Personal information attached upon chat room entry, optional |
- Example
[View sample code](/en/docs/TM5MzM5Njk/jE1NDM1MTA#Get the token)
Exit the Chat Room
When exiting from chat room, the user will disconnect with chat room and will not receive any message from the chat room. The user can leave a chat room by manually calling the exit chat room interface.
- API prototype
public static void Exit(long roomId);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
- Example
//Take test room 3001 as an example
long roomId = 3001;
NIMChatRoom.ChatRoomApi.Exit(roomId);
Send Message
First create the message content Message, then useNIMChatRoom.ChatRoomApi.SendMessage
interface to deliver the message sending result to the users. You can send various types of messages, including text, image, audio, video, geographic location and other custom messages. For specific message content, please refer to IM messaging. No local storage for message history record, you can query message history in the cloud.
- API prototype
public static void SendMessage(long roomId, Message msg);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
msg | For message content, see Message |
- Example
Message createMessage(long room_id)
{
Message msg = new Message();
msg.MessageType = NIMChatRoomMsgType.kNIMChatRoomMsgTypeText;
msg.AntiSpamEnabled = false;
msg.AntiSpamContent = "";
msg.MessageAttachment = "This is a test message";
msg.ClientMsgId = "nsgid"; //Generate the unique message id
return msg;
}
//Take test room 3001 as an example
long roomId = 3001;
Message msg = createMessage(roomId);
NIMChatRoom.ChatRoomApi.SendMessage(roomId,msg);
Query Cloud-based Message History
SDK supports querying chat room message records stored in the cloud.
- API prototype
public static void QueryMessageHistoryOnline(long roomId, long startTimeStamp, int count, QueryMessageHistoryResultDelegate cb);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
startTimeStamp | Query start timestamp (ms) |
count | Query quantity. The value must be larger than 0. |
cb | Result callback notification |
- Example
//Take test room 3001 as an example
long roomId = 3001;
long startTimetag = 1520391909233;//13-digit timestamp (ms)
NIMChatRoom.ChatRoomApi.QueryMessageHistoryOnline(roomId,startTimetag,20,(roomId,code,messages)=>
{
...
});
Chat Room Management
Get Chat Room Information
Chat room information is available through the event of entering chat room or separate interface. SDK doesn't provide local cache for chat room information. It only provide the interface for query from server, the use of which is subject to limitations on frequency of server interface usage.
ChatRoomInfo
Description of key parameters
Type | Parameter | Description |
---|---|---|
long | RoomId | Chat Room id, i.e. the room number |
string | RoomName | Chat room name, can be updated by manager |
string | Announcement | Chat room announcement |
string | BroadcastUrl | Address of video live streaming |
string | CreatorId | Account id of Chat room creator |
int | Valid | Chat room validity tag, 1: valid, 0: invalid |
string | Extension | Third-party extension field, must be an unformatted string that can be parsed as Json, with a length of 4000 |
int | OnlineMembersCount | Number of online members |
bool | IsMuted | Tag for chat room mute, 1: muted 0: not muted |
- API prototype
public static void GetRoomInfo(long roomId, GetRoomInfoDelegate cb);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
cb | Result callback notification |
- Example
//Take test room 3001 as an example
long roomId = 3001;
NIMChatRoom.ChatRoomApi.GetRoomInfo(roomId, (room_Id, errorCode, info) =>
{
...
});
Update Chat Room Information
SDK supports updating chat room information, but it can only done by the manager. For now, only four attributes of ChatRoomInfo can be updated, namelyRoomName
,Announcement
,BroadcastUrl
,Extension
. You can determine whether chat room broadcast notification is needed for the update.
- API prototype
public static void UpdateRoomInfo(long roomId, ChatRoomInfo info, UpdateRoomInfoDelegate cb, bool notify, string notify_ext);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
info | Information of chat room update |
cb | Result callback notification |
notify | Whether to enable chat room broadcast notification, true: enable, if sonotify_ext can’t be null, false: disable |
notify_ext | Custom field in the notification, with a length not exceeding 2048 |
- Example
//Take test room 3001 as an example
long roomId = 3001;
var ri = new ChatRoomInfo
{
RoomId = roomId,
Announcement ="Chat room announcement",
RoomName = "newName",
BroadcastUrl = "http://xxxxx",
Extension = "{\"test"\:\"1111\"}", //Custom extension string
};
NIMChatRoom.ChatRoomApi.UpdateRoomInfo(roomId, ri,(room_Id, errorCode) =>
{
...
},false,null);
Get List of Chat Room Members
The information of permanent members, information of online permanent members, and information of guests can be acquired via the interface MemberInfo, where extension field is filled in when the user enters a chat room. There are four types of fixed members: creator, manager, normal user, and restricted user. Muted and blacklisted users are all restricted users. The member list information is not cached locally, and can be directly obtained from the cloud.
MemberInfo
Description of key parameters
Type | Parameter | Description |
---|---|---|
long | RoomId | Chat Room id, i.e. the room number |
string | MemberId | Member account |
ChatRoomMemberType | MemberType | Member type, -1: restricted user; 0: normal user; 1: creator; 2: manager, see ChatRoomMemberType for details |
int | Level | A member level that is greater than 0 indicates the level can be customized by user/developer |
string | CreatorId | Account id of Chat room creator |
string | Nick | Chat room nickname field, can be submitted by the user upon entering the chat room |
string | MemberIcon | Chat room avatar, can be submitted by the user upon entering the chat room |
string | Extension | Third-party extension field, must be an unformatted string that can be parsed as JSON, with a length of 4000 |
NIMChatRoomOnlineState | OnlineState | Whether the member is online, only special members can be offline, visitors/anonymous users can only be online, 0: offline 1: online |
NIMChatRoomGuestFlag | GuestFlag | Whether the user is an ordinary visitor, 0: no, 1: yes; the identity of a visitor is not persisted in the chat room, and would only be in memory when the user is online |
long | JoinTimeStamp | The timestamp of chat room entry (in milliseconds), this field is null for offline members |
bool | IsInBlacklist | Blacklisted? 1: Yes 0: No |
bool | IsMuted | Muted? 1: Yes 0: No |
bool | IsValid | Valid? 1: Yes 0: No |
bool | TempMuted | Temporarily muted? 1: Yes 0: No |
long | TempMuteRestDuration | Remaining time of temporary mute, in seconds |
long | UpdateTimetag | Timestamp of updating fixed member history, used for sorting and query of fixed member list |
NIMChatRoomGetMemberType
Enumeration description
Enumeration | Value | Description |
---|---|---|
kNIMChatRoomGetMemberTypeSolid | 0 | Fixed members, fixed members, including creators, managers, normal users, restricted users (muted + blacklisted), even if they are not online, they are still in the list, but there is a limit on the number of fixed members |
kNIMChatRoomGetMemberTypeTemp | 1 | Non-fixed members, non-fixed members, also known as temporary members, can only be seen in the list when they are online, and there is no limit on the number of these members |
Enumeration description for member typeChatRoomMemberType
Enumeration | Value | Description |
---|---|---|
Restricted | -1 | Restricted member |
Normal | 0 | Normal members |
Creator | 1 | Creator |
Manager | 2 | Manager |
- API prototype
public static void QueryMembersOnline(long roomId, NIMChatRoomGetMemberType memberType, long timeOffset, int limit, QueryMembersResultDelegate cb);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
memberType | Member type |
timeOffset | Timestamp from current time |
limit | Query quantity |
cb | Result callback notification |
- Example
//Take test room 3001 as an example
long roomId = 3001;
long timeOffset = 0;//Timestamp from current time
NIMChatRoom.ChatRoomApi.QueryMembersOnline(roomId,NIMChatRoomGetMemberType.kNIMChatRoomGetMemberTypeSolid,timeOffset,20, (room_Id, errorCode, members) =>
{
...
});
Get Information of the Specified Chat Room Member
The information of multiple designated accounts can be acquired from cloud via the interface MemberInfo.
- API prototype
public static void QueryMemberInfosByIdCollection(long roomId, string[] idCollection, QueryMembersResultDelegate cb);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
idCollection | Collection of member ids |
cb | Result callback notification |
- Example
//For example, for chat room members test1, test2 in test room 3001
long roomId = 3001;
string[] ids = new string[] ();
ids.add("test1");
ids.add("test2");
NIMChatRoom.ChatRoomApi.QueryMemberInfosByIdCollection(roomId,ids, (room_Id, errorCode, members) =>
{
...
});
Update Personal Chat Room Information
Currently, you can only update your own chat room member information. Only nickname, avatar and extension field can be updated now. You can enable or disable notification of the update, if it is enabled, the users will be notified of the update through the event of receiving chat room notification.
- API prototype
public static void UpdateMyRoleInfo(long roomId, MemberInfo info, UpdateMyRoleDelegate cb, bool notify, string notify_ext,string jsonExt = null);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
MemberInfo | Member information, only update the fields that need to be modified, currently you can only update three attributes of MemberInfo ,which are Nick , MemberIcon andExtension . See MemberInfo. |
cb | Result callback notification |
notify | Whether to enable chat room broadcast notification, true: enable, if sonotify_ext can’t be null, false: disable |
notify_ext | Custom field in the notification, with a length not exceeding 2048 |
jsonExt | Reserved field |
- Example
//For example, for chat room members test1, test2 in test room 3001
long roomId = 3001;
var ri = new MemberInfo
{
RoomId = roomId,
Nick = "newNick",
MemberIcon = "http://xxxx/newIcon.png",
Extension = null,
};
NIMChatRoom.ChatRoomApi.UpdateMyRoleInfo(roomId,ri, (room_Id, errorCode) =>
{
...
},false,null);
Chat Room Permission Management
Set Member ID Tag
When setting as manger or removing a manager, the users will be notified of the event through the event of receiving chat room notification. See description of notification type. If a visitor is set as a manager and then removed from the manager role, he will become a normal member but not a visitor.
NIMChatRoomMemberAttribute
Enumeration description
Enumeration | Value | Description |
---|---|---|
kNIMChatRoomMemberAttributeAdminister | 1 | Manager (fixed member), only the creator has the permission to increase operation level |
kNIMChatRoomMemberAttributeNomalSold | 2 | Normal member, the operator must be a creator or manager |
kNIMChatRoomMemberAttributeBlackList | -1 | Blacklist member, the operator must be a creator or manager |
kNIMChatRoomMemberAttributeMuteList | -2 | Permanently muted member, the operator must be a creator or manager |
MemberProperty
Parameter description
Type | Parameter | Description |
---|---|---|
string | MemberId | Member account id |
NIMChatRoomMemberAttribute | Attribute | Membership ID tag, see NIMChatRoomMemberAttribute for details |
bool | Optional | Set the corresponding membership ID tag, 1: set 0: un-set |
int | Level | User level. It is valid only when "Optional= 1 or 2" is true. |
JsonExtension | NotifyExtension | Developer-customized extension field in the notification event generated by the operation, must be a JSON string |
- API prototype
public static void SetMemberPropertyOnline(long roomId, MemberProperty property, SetMemberPropertyDelegate cb);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
property | For member attributes, see MemberProperty. |
cb | Operation result callback |
- Example
//For example, for chat room member test1 in test room 3001
long roomId = 3001;
// Confirm/Undo the designation of a manager.
var ri = new MemberProperty
{
RoomId = roomId,
MemberId = "test1",
Attribute = NIMChatRoomMemberAttribute.kNIMChatRoomMemberAttributeAdminister,
Optional = true,//If ri.Optional is set to false, it means to cancel the manager.
};
NIMChatRoom.ChatRoomApi.SetMemberPropertyOnline(roomId,ri, (room_Id, errorCode,memberInfo) =>
{
...
});
// Confirm/revoke "permanent mute"
var prop = new MemberProperty
{
RoomId = roomId,
MemberId = "test1",
Attribute = NIMChatRoomMemberAttribute.kNIMChatRoomMemberAttributeMuteList,
Optional = true,//If ri.Optional is set to false, it means to cancel mute.
};
NIMChatRoom.ChatRoomApi.SetMemberPropertyOnline(roomId,prop, (room_Id, errorCode,memberInfo) =>
{
...
});
Temporarily Mute Members
This interface provides the feature of temporarily muting members and revoking the mute. To permanently mute the user, set the user as a muted user by using the set member ID tag interface. The mute will be automatically revoked upon expiration of the mute duration. The duration in notification message after successfully setting temporary mute is remaining time of mute. If the mute duration is set to 0, it means to cancel temporary mute. If the first mute duration has not ended and the second temporary mute is set, then the time is counted by the second settings.
- API prototype
public static void TempMuteMember(long roomId, string accid, long duration, TempMuteMemberDelegate cb, bool notify, string notify_ext);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
accid | Member account, required) |
duration | Temporary mute duration (in seconds), set to 0 if the mute is released |
cb | Operation result callback |
notify | Enable broadcast notification in the chat room? |
notify_ext | Custom field in the notification, with a length not exceeding 2048 |
- Example
//For example, mute chat room member test1 in test room 3001 for 60s
long roomId = 3001;
NIMChatRoom.ChatRoomApi.TempMuteMember(roomId,"test1", 60,(room_Id, errorCode,memberInfo) =>
{
...
},false,null);
Kick Online Members Out
Kick out member Only the manager can kick out normal member, only the creator can kick out manager. The extension field of kickout notification can be added. This field will be covered in extension field of kickout notification. The notification of chat room kick-out is sent to the developer through the Chat room notification event.
- API prototype
public static void RemoveMember(long roomId, string memberId, string notify, RemoveMemberDelegate cb);
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
memberId | Member account |
notify | Extension field placed in the event notification |
cb | Operation result callback |
- Example
//For example, for chat room member test1 in test room 3001
long roomId = 3001;
NIMChatRoom.ChatRoomApi.RemoveMember(roomId,"test1","notify" ,(room_Id, errorCode) =>
{
...
});
Chat Room Queue Service
Chat room provides a queue service for the scene of live streaming with mic link.
New (updated) Queue Element of Mic Queue
Chat room queue service: add or update queue elements (only for chat room manager).When element_key
doesn’t exist , calling this interface means adding a new element. If element_key
exists,calling this interface means updating element_key
in elemnet_value
.
- API prototype
public static void QueueOfferAsync(long roomId, string element_key, string elemnet_value, ChatRoomQueueOfferDelegate cb, string json_extension = "");
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
element_key | Unique key of new element, with max. length 128 bytes |
elemnet_value | Content of new element, with max. length 4096 bytes |
cb | Operation result callback |
json_extension | Extension parameter, reserved |
- Example
//Take test room 3001 as an example
long roomId = 3001;
NIMChatRoom.ChatRoomApi.QueueOfferAsync(roomId,"key1","value1", (room_Id, errorCode) =>
{
...
},null);
Take out Mic Queue Elements
element_key
is the unique key,ifelement_key
is null, it means to take out the head element. If it is not null, it means to take out a specified element. After the operation is successfully done, the key and value of the element can be obtained from the callback notificationresult
.
- API prototype
public static void QueuePollAsync(long roomId, string element_key, ChatRoomQueuePollDelegate cb, string json_extension = "");
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
element_key | Unique key of the element, with a length not exceeding 128 bytes |
cb | Operation result callback |
json_extension | Extension parameter, reserved |
- Example
//Take test room 3001 as an example
long roomId = 3001;
NIMChatRoom.ChatRoomApi.QueuePollAsync(roomId,"key1",(room_Id, errorCode,result) =>
{
//result: json string of the queue element, as obtained, example {"key":"key1","value":"value1"}
...
},null);
Get All Queue Elements
Lists all the queue elements in order, and returns the JSON array of the queue elements in result.
- API prototype
public static void QueueListAsync(long roomId, ChatRoomQueueListDelegate cb, string json_extension = "");
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
cb | Operation result callback |
json_extension | Extension parameter, reserved |
- Example
//Take test room 3001 as an example
long roomId = 3001;
NIMChatRoom.ChatRoomApi.QueueListAsync(roomId,(room_Id, errorCode,result) =>
{
//result: json array of queue elements, as obtained, examples include [{"key":"key1","value":"value1"},{"key":"key2","value":"value2"}]
...
},null);
Delete Mic Queue
Deletes the entire mic queue, manager rights required.
- API prototype
public static void QueueDropAsync(long roomId, ChatRoomQueueDropDelegate cb, string json_extension = "");
- Parameter Description
Parameter | Description |
---|---|
roomId | Chat room id, i.e. room number, required |
cb | Operation result callback |
json_extension | Extension parameter, reserved |
- Example
//Take test room 3001 as an example
long roomId = 3001;
NIMChatRoom.ChatRoomApi.QueueDropAsync(roomId,(room_Id, errorCode) =>
{
...
},null);
Clean the chat room
Clean up the resources consumed by the chat room. Call the method once before calling NIM.ClientApi.Cleanup
.
- API prototype
public static void Cleanup();
- Example
private void OnApplicationQuit()
{
//You Must call logout and cleanup resources for IM SDK.
//In this,you should call synchronous method.
// `Cleanup` should be called once only
//Firstly,you should exit chat room.
NIMChatRoom.ChatRoomApi.Exit(CHATROOM_ID);
NIM.ClientAPI.Logout(NIMLogoutType.kNIMLogoutAppExit);
//Cleanup chat room plugin and then cleanup IM resources.
NIMChatRoom.ChatRoomApi.Cleanup();
NIM.ClientAPI.Cleanup();
}