仅支持打包版本,在打包时,需要提供融云的KEY信息
IM插件类引用下载:
一、在融云 http://www.rongcloud.cn/ 注册,并创建APP,获取APP的APPKEY和APPSECRET
注:开发环境和生产环境,IOS需要注册应用名和证书信息,Android可不输入
二、Token初始化
1. 将下载的DLL文件引用到项目中
2. 重新生成之后,即可发现,左边的工具栏中出现了IM控件(如未出现,则关闭当前窗体,重新打开),拖入到窗体中
3. 对IM插件进行初始化是指,使用当前登陆用户(即当前使用用户)从服务端获取Token,并将使用获取的Token初始化客户端。请注意,客户端会缓存最后一次的Token
a、初始化:im1.InitialInstance(appKey, appSecret)
b、根据当前Token重新初始化客户端:im1.InitialToken(UserID, UserName, portraitUri);
注:如若Token失效,请去融云查看http://www.rongcloud.cn/,如下:
三、用户管理
a、添加用户:CreateUser(string userId,string userName,string portraitUri)
在demo中,“IM”-“联系人”-“添加联系人”,如下: - //在添加联系人列表模板中添加联系人
- ((SmoONE.UI.Im.frmAddConcentOrGroup)this.Form).im1.CreateUser(cInputDto.C_USER, lblUser.BindDisplayValue.ToString(), MobileResourceManager.DefaultImagePath +imgPortrait .BindDisplayValue .ToString ()+".png");
- <img alt="" src="https://www.smobiler.com/forum.php?mod=image&aid=1128&size=300x300&key=ba364b99019d1c49&nocache=yes&type=fixnone" border="0" aid="attachimg_1128"><img alt="" src="https://www.smobiler.com/forum.php?mod=image&aid=1124&size=300x300&key=583ac685974923fb&nocache=yes&type=fixnone" border="0" aid="attachimg_1124">
复制代码
b、用户用户信息:RefreshUser(string userId,string userName,string portraitUri)
注:添加用户,刷新用户信息必须在初始化Token后
四、群组管理
a、创建群组:CreateGroup(String[] userId, String groupId, String groupName)
在demo中,“登录”-“IM”-“群组”-“创建群组”,如下:
- //创建群组
- im1.CreateGroup(guser1, groupid, cgroupInputDto.G_NAME);
复制代码
b、加入群组:JoinGroup(String[] userId, String groupId, String groupName)
- string group = this.textBox3.Text;
- string user = this.textBox1.Text;
- if (System.String.IsNullOrEmpty(user) == false && string.IsNullOrEmpty(group) == false)
- {
- im1.JoinGroup(new string[] { user }, group, group);
- }
- else
- MessageBox.Show("EmptyUser or Group");
复制代码
c、退出群组:QuitGroup(String[] userId, String groupId)
d、解散群组:DismissGroup(String userId, String groupId)
注:创建群组,加入群组,退出群组,解散群组必须在初始化Token后
五、界面显示
a.开始单用户聊天:StartPrivateChat(string userid, string title)
在demo中,“登录”-“IM”-“联系人”,点击联系人列表某联系人,即可与用户聊天,如下: - //在联系人模板中调用im用户聊天
- if (((SmoONE.UI.Im .frmConcent)this.Form).im1 != null)
- {
- ((SmoONE.UI.Im.frmConcent)this.Form).im1.StartPrivateChat(lblUser .BindDataValue .ToString (), lblUser.BindDisplayValue.ToString());
- }
复制代码
b.开始群组聊天:StartGroupChat(string groupid, string title)
在demo中,“登录”-"IM"-“群组”,点击群组列表,即可进行群组聊天
- //在群组列表模板中调用群组聊天
- ((SmoONE.UI.Im.frmConcent)this.Form).im1.StartGroupChat(lblGroup.BindDataValue.ToString(), lblGroup.BindDisplayValue.ToString());
复制代码
c.打开会话列表:StartConversationList()
在demo中登录后点击底部的“消息”按钮,便可查看聊天列表,如下:
注:用户聊天,群组聊天,打开会话列表必须在初始化Token后
d、退出im:im.Logout()
六、委托回调
由于在IM中,获取用户信息,群组信息等是异步加载的,所以需要提供回调的实现。
1、LoadUserInfo获取用户信息,返回IMUserEntry对象
- private void im1_LoadUserInfo(object sender, IMLoadUserInfoArgs e)
- {
- IMUserEntry user = new IMUserEntry();
- UserDetails userDetails = new UserDetails();
- UserDetailDto userDetailDto = userDetails.getUser(e.UserId);
- user.UserID = e.UserId;
- if (userDetailDto != null)
- {
- user.UserName = userDetailDto.U_Name;
- user.PortraitUri = ".\\Image\\" + userDetailDto.U_Portrait + ".PNG";
- }
- //返回IMUserEntry
- e.Result = user;
- }
复制代码
2、LoadGroupInfo 获取群组信息,返回IMGroupEntry对象
- private void im1_LoadGroupInfo(object sender, IMLoadGroupInfoArgs e)
- {
- Smobiler.Core.Controls.RongIM.IMGroupEntry entity = new Smobiler.Core.Controls.RongIM.IMGroupEntry();
- entity.GroupID = e.GroupId;
- entity.GroupName = "name" + e.GroupId;
- entity.PortraitUri = DefaultPortrait;
- e.Result = entity;
- }
复制代码
3、LoadGroupMembers 获取群组成员信息,返回string数组
- private void im1_LoadGroupMembers(object sender, IMLoadGroupMembersArgs e)
- {
- CGroupDto CGroupDto = AutofacConfig.cGroupService.GetByID(e.GroupId );
- string[] groupusers ;
- if (CGroupDto!=null )
- {
- groupusers = CGroupDto.G_USER.Split(',');
- }
- else
- {
- groupusers = new String[1];
- }
- e.Result =groupusers;
- }
复制代码
4、TokenExpired Token过期后,重新初始化Token,返回string(token)
一般来说,token是永久不会过期的,但是不排除不过期的可能。token过期后,需要重置当前im的token。
- private void im1_TokenExpired(object sender, IMTokenExpiredArgs e)
- {
- im1.InitialToken(e.UserId, e.UserId, DefaultPortrait);
- e.Result = im1.Token;
- }
复制代码
5.IMInitial 获取token初始化回调,返回true时初始化成功,返回false初始化失败,例如:
- private void im1_Initial(object sender, IMInitialArgs e)
- {
- this.Toast("Initial" + e.InitialResult.ToString());
- }
复制代码
im源码下载地址:https://github.com/comsmobiler/SmoONE
|