文章主要讲解环信 IM Unity SDK 如何使用。
源码地址: Github
任何问题可以通过 Github Issues 提问
QQ群: 891289413
如果您还没有 Appkey,可以前往环信官网注册即时通讯云。
进入 console -> 添加应用 -> Appkey 获取 Appkey
。
Assets
-> Import Package
-> Custom Package..
-> imUnitySDK.unitypackage
SDKClient
用于管理sdk各个模块和一些账号相关的操作,如注册,登录,退出;IChatManager
用于管理聊天相关操作,如发送消息,接收消息,发送已读回执,获取会话列表等;IContactManager
用于管理通讯录相关操作,如获取通讯录列表,添加好友,删除好友等;IGroupManager
用于群组相关操作,如获取群组列表,加入群组,离开群组等;IRoomManager
用于管理聊天室,如获取聊天室列表;
// 设置 Appkey
Options options = new Options(appKey: "easemob-demo#easeim");
// 初始化 sdk
SDKClient.Instance.InitWithOptions(options);
SDKClient.Instance.CreateAccount("username", "password", new CallBack(
onSuccess: () => {
Debug.Log("执行成功");
},
onError: (code, desc) => {
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
客户端注册需要将注册方式设置为
开放注册
,具体说明请参考文档用户管理。
SDKClient.Instance.Login("username", "password", handle: new CallBack(
onSuccess: () => {
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
}
String currentUsername = SDKClient.Instance.CurrentUsername();
SDKClient.Instance.Logout(true, new CallBack(
onSuccess: () => {
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
退出也有失败的情况,需要确定是否失败。
注册环信id详细说明请参考文档用户体系集成。
public class TestSDK : MonoBehaviour, IConnectionDelegate
{
private void Start()
{
// 添加监听,需在sdk 初始化后调用
SDKClient.Instance.AddConnectionDelegate(this);
}
private void OnDestroy()
{
// 移除监听
SDKClient.Instance.DeleteConnectionDelegate(this);
}
// 成功连接回调
public void OnConnected()
{
}
// 服务器断开连接时触发的回调
public void OnDisconnected()
{
}
// 当前登录账号在其它设备登录时会接收到此回调
public void OnLoggedOtherDevice(string deviceName)
{
}
// 当前登录账号已经被从服务器端删除时会收到该回调
public void OnRemovedFromServer()
{
}
// 当前用户账号被禁用时会收到该回调
public void OnForbidByServer()
{
}
// 当前登录账号因密码被修改被强制退出
public void OnChangedIMPwd()
{
}
// 当前登录账号因达到登录设备数量上限被强制退出
public void OnLoginTooManyDevice()
{
}
// 当前登录设备账号被登录其他设备的同账号踢下线
public void OnKickedByOtherDevice()
{
}
// 当前登录设备账号因鉴权失败强制退出
public void OnAuthFailed()
{
}
// Token 过期回调
public void OnTokenExpired()
{
}
// Token 即将过期回调
public void OnTokenWillExpire()
{
}
// App 激活数量已达到上限值
public void OnAppActiveNumberReachLimitation()
{
}
}
bool isConnected = SDKClient.Instance.IsConnected;
string version = SDKClient.Instance.SdkVersion;
List<Conversation>conversations = SDKClient.Instance.ChatManager.LoadAllConversations();
会话列表是存在本地的一种消息管理对象,如果您会话中没有消息则表示会话不存在。
// emId: 会话对应环信id, 如果是群组或者聊天室,则为群组id或者聊天室id
Conversation conv = SDKClient.Instance.ChatManager.GetConversation("emId");
Conversation conv = SDKClient.Instance.ChatManager.GetConversation("emId");
conv.LoadMessages(handle:new ValueCallBack<List<Message>>(
onSuccess: (messages) => {
Debug.Log("获取成功");
},
onError:(code, desc) => {
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
Conversation conv = SDKClient.Instance.ChatManager.GetConversation("conversationId");
int unreadCount = conv.UnReadCount;
Conversation conv = SDKClient.Instance.ChatManager.GetConversation("emId");
conv.MarkMessageAsRead("messageId");
Conversation conv = SDKClient.Instance.ChatManager.GetConversation("emId");
conv.MarkAllMessageAsRead();
SDKClient.Instance.ChatManager.SendMessageReadAck("messageId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
Conversation conv = SDKClient.Instance.ChatManager.GetConversation("emId");
conv.DeleteMessage("messageId");
Conversation conv = SDKClient.Instance.ChatManager.GetConversation("conversationId");
conv.DeleteAllMessages();
Conversation conv = SDKClient.Instance.ChatManager.GetConversation("emId");
conv.InsertMessage(message);
SDK在您发送和接收消息(cmd类型消息除外)后会自动将消息插入数据库中,并不需要您自己将消息插入数据库,但如果您需要自己插入一条消息时可以调用该api。
Conversation conv = SDKClient.Instance.ChatManager.GetConversation("emId");
conv.UpdateMessage(message);
SDKClient.Instance.ChatManager.DeleteConversation("emId");
// 文本消息
Message textMessage = Message.CreateTextSendMessage("接收方id", "消息内容");
// 图片消息
Message imgMessage = Message.CreateImageSendMessage("接收方id", localPath: "图片路径", displayName: "图片名称.xx");
// 视频消息
Message videoMessage = Message.CreateVideoSendMessage("接收方id", localPath: "适配路径", displayName: "适配文件名称.xx");
// 音频消息
Message voiceMessage = Message.CreateVoiceSendMessage("接收方id", localPath: "音频文件路径", displayName: "音频文件名称.xx", duration: 10);
// 文件消息
Message fileMessage = Message.CreateFileSendMessage("接收方id", localPath:"文件路径", displayName:"文件名称.xx");
// 位置消息
Message localMessage = Message.CreateLocationSendMessage("接收方id", address:"位置名称", latitude:0.11, longitude:0.31);
// cmd消息
Message cmdMessage = Message.CreateCmdSendMessage("接收方id", action: "自定义事件");
// 自定义消息
Message customMessage = Message.CreateCustomSendMessage("接收方id", customEvent: "自定义事件");
如果您是要构建群组或者聊天室消息,需要修改消息的
MessageType
属性, 如:
message.MessageType = MessageType.Group;
SDKClient.Instance.ChatManager.SendMessage(ref message, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
},
// 只有带有附件的消息才会回调进度
onProgress: (progress) => { }
));
环信收发消息并不需要对方是您通讯录中的成员,只要知道对方的环信id就可以发送消息。
#### 撤回消息
```C#
SDKClient.Instance.ChatManager.RecallMessage("messageId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
消息撤回为增值服务,您只能撤回2分钟内的消息,如需开通,请咨询商务。
public class TestSDK : MonoBehaviour, IChatManagerDelegate
{
private void Start()
{
// 添加监听,需在sdk 初始化后调用
SDKClient.Instance.ChatManager.AddChatManagerDelegate(this);
}
private void OnDestroy()
{
// 移除监听
SDKClient.Instance.ChatManager.AddChatManagerDelegate(this);
}
// 收到消息
public void OnMessagesReceived(List<Message> messages)
{
}
// 收到CMD消息
public void OnCmdMessagesReceived(List<Message> messages)
{
}
// 发出的消息已读回调
public void OnMessagesRead(List<Message> messages)
{
}
// 发出的消息已送达回调
public void OnMessagesDelivered(List<Message> messages)
{
}
// 消息被撤回回调
public void OnMessagesRecalled(List<Message> messages)
{
}
// 发出的群消息已读更新
public void OnReadAckForGroupMessageUpdated()
{
}
// 发出的群消息已读
public void OnGroupMessageRead(List<GroupReadAck> list)
{
}
// 会话列表变化
public void OnConversationsUpdate()
{
}
// 会话已读
public void OnConversationRead(string from, string to)
{
}
// 消息Reaction发生变更
public void MessageReactionDidChange(List<MessageReactionChange> list)
{
}
// 消息内容发生变更
public void OnMessageContentChanged(Message msg, string operatorId, long operationTime)
{
}
}
SDKClient.Instance.ContactManager.GetAllContactsFromServer(new ValueCallBack<List<string>>(
onSuccess: (list) => {
Debug.Log("执行成功");
},
onError:(code, desc) => {
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.ContactManager.AddContact("emId", "hello", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
添加申请不会发推送,如果用户不在线,等上线后会收到。
SDKClient.Instance.ContactManager.DeleteContact("emId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.ContactManager.GetBlockListFromServer(new ValueCallBack<List<string>>(
onSuccess: (list) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.ContactManager.AddUserToBlockList("emId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
黑名单和通讯录是独立的,被添加人不需要在您的通讯录中,如果是通讯录中成员被加入到黑名单后,他仍然会出现在您的通讯录名单中,同时他也会出现在您的黑名单中。被添加到黑名单后,您双方均无法收发对方的消息。
SDKClient.Instance.ContactManager.RemoveUserFromBlockList("emId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
public class TestSDK : MonoBehaviour, IContactManagerDelegate
{
private void Start()
{
// 添加监听,需在sdk 初始化后调用
SDKClient.Instance.ContactManager.AddContactManagerDelegate(this);
}
private void OnDestroy()
{
// 移除监听
SDKClient.Instance.ContactManager.RemoveContactManagerDelegate(this);
}
// 联系人增加回调
public void OnContactAdded(string username)
{
}
// 联系人减少回调
public void OnContactDeleted(string username)
{
}
// 收到添加好友请求
public void OnContactInvited(string username, string reason)
{
}
// 发出的添加好友请求被同意
public void OnFriendRequestAccepted(string username)
{
}
// 发出的添加好友请求被解决
public void OnFriendRequestDeclined(string username)
{
}
}
SDKClient.Instance.ContactManager.AcceptInvitation("emId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.ContactManager.DeclineInvitation("emId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.FetchJoinedGroupsFromServer(handle: new ValueCallBack<List<Group>>(
onSuccess: (list) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
List<Group>groups = SDKClient.Instance.G服务器获取公开群组列表
```C#
SDKClient.Instance.GroupManchPublicGrouomServer(new ValueCallBack<CursorResult<GroupInfo>>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.CreateGroup("群组名称", options: new GroupOptions(GroupStyle.PrivateMemberCanInvite), new ValueCallBack<Group>(
onSuccess: (group) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
GroupOptions
GroupStyle
等参数进行设置,群组有四种,分别是:PrivateOnlyOwnerInvite
私有群,只有群主和管理员能邀请他人进群,被邀请人会收到邀请信息,同意后可入群;PrivateMemberCanInvite
私有群,所有人都可以邀请他人进群,被邀请人会收到邀请信息,同意后可入群;PublicJoinNeedApproval
公开群,可以通过获取公开群列表api取的,申请加入时需要群主或管理员同意;PublicOpenJoin
公开群,可以通过获取公开群列表api取,可以直接进入;
SDKClient.Instance.GroupManager.GetGroupSpecificationFromServer("groupId", new ValueCallBack<Group>(
onSuccess: (group) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.GetGroupMemberListFromServer("groupId", handle: new ValueCallBack<CursorResult<string>>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.JoinPublicGroup("groupId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
需要群组类型是
PublicOpenJoin
,调用后直接加入群组。
SDKClient.Instance.GroupManager.applyJoinToGroup("groupId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
需要群组类型是
PublicJoinNeedApproval
,申请后,群主和管理员会收到加群邀请,同意后入群。
SDKClient.Instance.GroupManager.AddGroupMembers("groupId", members, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
需要群组类型是
PrivateOnlyOwnerInvite
或PrivateMemberCanInvite
,PrivateOnlyOwnerInvite
时,群主和管理员可以调用;PrivateMemberCanInvite
是,群中任何人都可以调用; 被邀请方会收到邀请通知,同意后进群。邀请通知并不会以推送的形式发出,如果用户不在线,等上线后会收到,用户同意后入群。
SDKClient.Instance.GroupManager.DeleteGroupMembers("emId", members, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
群主和管理员可以调用。
SDKClient.Instance.GroupManager.AddGroupAdmin("emId", "memberId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
群主可以调用。被操作人会收到被添加为管理员回调,该回调无推送,如用户不在线,上线后会收到。
SDKClient.Instance.GroupManager.RemoveGroupAdmin("emId", "adminId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
群主可以调用。被操作人会收到被移除管理员回调,该回调无推送,如用户不在线,上线后会收到。
SDKClient.Instance.GroupManager.LeaveGroup("emId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.DestroyGroup("emId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
只有群主可以调用。
SDKClient.Instance.GroupManager.ChangeGroupOwner("emId", "newOwnerId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
只有群主可以调用。
SDKClient.Instance.GroupManager.GetGroupBlockListFromServer("emId", new ValueCallBack<List<string>>(
onSuccess: (list) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.BlockGroupMembers("groupId", members, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
该方法只有群主和管理员可以调用,被操作用户当前必须是群成员,当用户被加入到群黑名单后,该用户将从群成员中移除并加入到当前群的黑名单中。同时该用户将无法再进入该群。
SDKClient.Instance.GroupManager.UnBlockGroupMembers("groupId", members, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
该方法只有群主和管理员可以调用,当账号从黑名单中移除后可以再允许申请加群。
SDKClient.Instance.GroupManager.GetGroupMuteListFromServer("groupId", handle: new ValueCallBack<List<string>>(
onSuccess: (list) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.MuteGroupMembers("groupId", members, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
该方法只有群主和管理员可以调用,被禁言的用户仍然可以收到群中的消息,但是无法发出消息, 白名单中的用户即使被加入到禁言列表中也不受影响。
SDKClient.Instance.GroupManager.UnMuteGroupMembers("groupId", members, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
该方法只有群主和管理员可以调用。
SDKClient.Instance.GroupManager.MuteGroupAllMembers("groupId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
该方法只有群主和管理员可以调用,对群主,管理员,白名单中的成员无效,且针对所有人的
禁言
操作与muteMembers
、unMuteMembers
接口不冲突,该接口的操作并不会导致getGroupMuteListFromServer
接口的返回的数据变化。
SDKClient.Instance.GroupManager.UnMuteGroupAllMembers("groupId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
该方法只有群主和管理员可以调用,且针对所有人的
解除禁言
操作与muteMembers
、unMuteMembers
接口不冲突,该接口的操作并不会导致getGroupMuteListFromServer
接口的返回的数据变化。当调用该方法后,之前在禁言列表中的用户仍在禁言列表中,且仍处于禁言状态。
SDKClient.Instance.GroupManager.GetGroupAllowListFromServer("groupId", new ValueCallBack<List<string>>(
onSuccess: (list) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.AddGroupAllowList("groupId", members, new ValueCallBack<List<string>>(
onSuccess: (list) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
该方法只有群主和管理员可以调用,当用户被加入到白名单后,当群组全部禁言或者被添加到禁言列表后仍可以发言。
SDKClient.Instance.GroupManager.RemoveGroupAllowList("groupId", members, new ValueCallBack<List<string>>(
onSuccess: (list) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
该方法只有群主和管理员可以调用。
SDKClient.Instance.GroupManager.CheckIfInGroupAllowList("groupId", new ValueCallBack<bool>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.BlockGroup("groupId", new ValueCallBack<bool>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
设置后群组中的所有消息都无法收到,用户不在线时也不会有推送告知。
SDKClient.Instance.GroupManager.UnBlockGroup("groupId", new ValueCallBack<bool>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.ChangeGroupName("groupId", "new name", new ValueCallBack<bool>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
群主或管理员可以调用。
SDKClient.Instance.GroupManager.ChangeGroupDescription("groupId", "new description", new ValueCallBack<bool>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
群主或管理员可以调用。
SDKClient.Instance.GroupManager.GetGroupAnnouncementFromServer("groupId", new ValueCallBack<string>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.UpdateGroupAnnouncement("groupId", "new announcement",new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
群主或管理员可以调用。
SDKClient.Instance.GroupManager.GetGroupFileListFromServer("groupId", new ValueCallBack<List<GroupSharedFile>>(
onSuccess: (list) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.UploadGroupSharedFile("groupId", "file path", handle: new ValueCallBack<List<GroupSharedFile>>(
onSuccess: (list) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.DownloadGroupSharedFile("groupId", "fileId", savePath, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.DeleteGroupSharedFile("groupId", "fileId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
群主,管理员,文件上传者可以调用。
public class TestSDK : MonoBehaviour, IGroupManagerDelegate
{
private void Start()
{
// 添加监听,需在sdk 初始化后调用
SDKClient.Instance.GroupManager.AddGroupManagerDelegate(this);
}
private void OnDestroy()
{
// 移除监听
SDKClient.Instance.GroupManager.RemoveGroupManagerDelegate(this);
}
// 收到加群邀请
public void OnInvitationReceivedFromGroup(string groupId, string groupName, string inviter, string reason)
{
}
// 收到加群申请
public void OnRequestToJoinReceivedFromGroup(string groupId, string groupName, string applicant, string reason)
{
}
// 发出的加群申请被同意
public void OnRequestToJoinAcceptedFromGroup(string groupId, string groupName, string accepter)
{
}
// 发出的加群申请被拒绝
public void OnRequestToJoinDeclinedFromGroup(string groupId, string groupName, string decliner, string reason)
{
}
// 发出的加群邀请被同意
public void OnInvitationAcceptedFromGroup(string groupId, string invitee)
{
}
// 发出的加群邀请被拒绝
public void OnInvitationDeclinedFromGroup(string groupId, string invitee, string reason)
{
}
// 群成员被删除
public void OnUserRemovedFromGroup(string groupId, string groupName)
{
}
// 群解散
public void OnDestroyedFromGroup(string groupId, string groupName)
{
}
// 自动同意加群邀请
public void OnAutoAcceptInvitationFromGroup(string groupId, string inviter, string inviteMessage)
{
}
// 收到禁言列表增加回调
public void OnMuteListAddedFromGroup(string groupId, List<string> mutes, long muteExpire)
{
}
// 收到禁言列表减少回调
public void OnMuteListRemovedFromGroup(string groupId, List<string> mutes)
{
}
// 收到管理员列表增加回调
public void OnAdminAddedFromGroup(string groupId, string administrator)
{
}
// 收到管理员列表减少回调
public void OnAdminRemovedFromGroup(string groupId, string administrator)
{
}
// 收到群主变更回调
public void OnOwnerChangedFromGroup(string groupId, string newOwner, string oldOwner)
{
}
// 收到群成员增加回调
public void OnMemberJoinedFromGroup(string groupId, string member)
{
}
// 收到群成员减少回调
public void OnMemberExitedFromGroup(string groupId, string member)
{
}
// 收到群公告变更回调
public void OnAnnouncementChangedFromGroup(string groupId, string announcement)
{
}
// 收到群文件增加回调
public void OnSharedFileAddedFromGroup(string groupId, GroupSharedFile sharedFile)
{
}
// 收到群文件减少回调
public void OnSharedFileDeletedFromGroup(string groupId, string fileId)
{
}
// 收到允许列表添加回调
public void OnAddAllowListMembersFromGroup(string groupId, List<string> allowList)
{
}
// 收到允许列表删除回调
public void OnRemoveAllowListMembersFromGroup(string groupId, List<string> allowList)
{
}
// 收到全体成员禁言状态变化回调
public void OnAllMemberMuteChangedFromGroup(string groupId, bool isAllMuted)
{
}
// 收到群组禁用状态发生变化回调
public void OnStateChangedFromGroup(string groupId, bool isDisable)
{
}
// 收到群详情发生了变更回调
public void OnSpecificationChangedFromGroup(Group group)
{
}
// 收到群成员自定义属性发生了变更回调
public void OnUpdateMemberAttributesFromGroup(string groupId, string userId, Dictionary<string, string> attributes, string from)
{
}
}
SDKClient.Instance.GroupManager.AcceptGroupJoinApplication("groupId", "memberId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
群主和管理员可以调用。
SDKClient.Instance.GroupManager.DeclineGroupJoinApplication("groupId", "memberId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
群主和管理员可以调用。
SDKClient.Instance.GroupManager.AcceptGroupInvitation("groupId", new ValueCallBack<Group>(
onSuccess: (group) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.GroupManager.DeclineGroupInvitation("groupId", handle: new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.RoomManager.FetchPublicRoomsFromServer(handle: new ValueCallBack<PageResult<Room>>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.RoomManager.CreateRoom("RoomName", new ValueCallBack<Room>(
onSuccess: (room) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
聊天室创建需要单独拥有权限,具体可以参考文档聊天室管理。
SDKClient.Instance.RoomManager.JoinRoom("roomId", new ValueCallBack<Room>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.RoomManager.LeaveRoom("roomId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.RoomManager.DestroyRoom("roomId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
聊天室销毁需要单独拥有权限,具体可以参考文档聊天室管理。
SDKClient.Instance.RoomManager.ChangeRoomOwner("roomId", "newOwnerId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
聊天室转移需要单独拥有权限,具体可以参考文档聊天室管理。
SDKClient.Instance.RoomManager.FetchRoomInfoFromServer("roomId", new ValueCallBack<Room>(
onSuccess: (room) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.RoomManager.FetchRoomMembers("roomId", new ValueCallBack<CursorResult<string>>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.RoomManager.DeleteRoomMembers("roomId", members, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
创建者或管理员调用。
SDKClient.Instance.RoomManager.AddRoomAdmin("roomId", "memberId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
创建者调用,被操作者会收到回调。
SDKClient.Instance.RoomManager.RemoveRoomAdmin("roomId", "adminId", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
创建者调用,被操作者会收到回调。
SDKClient.Instance.RoomManager.FetchRoomMuteList("roomId", new ValueCallBack<List<string>>(
onSuccess: (list) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.RoomManager.MuteRoomMembers("roomId", members, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
创建者或者管理员调用。
SDKClient.Instance.RoomManager.UnMuteRoomMembers("roomId", members, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
创建者或者管理员调用。
SDKClient.Instance.RoomManager.FetchRoomBlockList("roomId", new ValueCallBack<List<string>>(
onSuccess: (list) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.RoomManager.BlockRoomMembers("roomId", members, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
创建者或管理员调用。
SDKClient.Instance.RoomManager.UnBlockRoomMembers("roomId", members, new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
创建者或管理员调用。
SDKClient.Instance.RoomManager.ChangeRoomName("roomId", "new name", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
创建者或管理员调用。
SDKClient.Instance.RoomManager.ChangeRoomDescription("roomId", "new description", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
创建者或管理员调用。
SDKClient.Instance.RoomManager.FetchRoomAnnouncement("roomId", new ValueCallBack<string>(
onSuccess: (result) =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
SDKClient.Instance.RoomManager.UpdateRoomAnnouncement("roomId", "new announcement", new CallBack(
onSuccess: () =>
{
Debug.Log("执行成功");
},
onError: (code, desc) =>
{
Debug.Log($"错误码 -- {code}");
Debug.Log($"错误描述 -- {desc}");
}
));
创建者或管理员调用
public class TestSDK : MonoBehaviour, IRoomManagerDelegate
{
private void Start()
{
// 添加监听,需在sdk 初始化后调用
SDKClient.Instance.RoomManager.AddRoomManagerDelegate(this);
}
private void OnDestroy()
{
// 移除监听
SDKClient.Instance.RoomManager.RemoveRoomManagerDelegate(this);
}
// 聊天室被销毁回调
public void OnDestroyedFromRoom(string roomId, string roomName)
{
}
// 有用户加入聊天室回调
public void OnMemberJoinedFromRoom(string roomId, string participant)
{
}
// 有用户离开聊天室回调
public void OnMemberExitedFromRoom(string roomId, string roomName, string participant)
{
}
// 当前账号被移出聊天室
public void OnRemovedFromRoom(string roomId, string roomName, string participant)
{
}
// 被禁言用户增加
public void OnMuteListAddedFromRoom(string roomId, List<string> mutes, long expireTime)
{
}
// 被禁言用户减少
public void OnMuteListRemovedFromRoom(string roomId, List<string> mutes)
{
}
// 管理员增加
public void OnAdminAddedFromRoom(string roomId, string admin)
{
}
// 管理员减少
public void OnAdminRemovedFromRoom(string roomId, string admin)
{
}
// 聊天室拥有者变更
public void OnOwnerChangedFromRoom(string roomId, string newOwner, string oldOwner)
{
}
// 聊天室公告变更
public void OnAnnouncementChangedFromRoom(string roomId, string announcement)
{
}
// 聊天室成员因为离线被移除
public void OnRemoveFromRoomByOffline(string roomId, string roomName)
{
}
}