Smobiler上海石磨_.NET移动开发平台
标题: smobiler4.0IM [打印本页]
作者: Lincy.Lin 时间: 2017-9-26 15:33
标题: smobiler4.0IM
仅支持打包版本,在打包时,需要提供融云的KEY信息
IM插件类引用下载:
[attach]1138[/attach]
一、在融云 http://www.rongcloud.cn/ 注册,并创建APP,获取APP的APPKEY和APPSECRET
注:开发环境和生产环境,IOS需要注册应用名和证书信息,Android可不输入
[attach]1134[/attach]
[attach]1127[/attach]
二、Token初始化
1. 将下载的DLL文件引用到项目中
[attach]1136[/attach]
2. 重新生成之后,即可发现,左边的工具栏中出现了IM控件(如未出现,则关闭当前窗体,重新打开),拖入到窗体中
[attach]1071[/attach]
3. 对IM插件进行初始化是指,使用当前登陆用户(即当前使用用户)从服务端获取Token,并将使用获取的Token初始化客户端。请注意,客户端会缓存最后一次的Token
a、初始化:im1.InitialInstance(appKey, appSecret)
b、根据当前Token重新初始化客户端:im1.InitialToken(UserID, UserName, portraitUri);
注:如若Token失效,请去融云查看http://www.rongcloud.cn/,如下:
[attach]1133[/attach][attach]1134[/attach]
三、用户管理
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);
复制代码
[attach]1130[/attach][attach]1126[/attach]
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());
- }
复制代码
[attach]1128[/attach] [attach]1129[/attach]
b.开始群组聊天:StartGroupChat(string groupid, string title)
在demo中,“登录”-"IM"-“群组”,点击群组列表,即可进行群组聊天
- //在群组列表模板中调用群组聊天
- ((SmoONE.UI.Im.frmConcent)this.Form).im1.StartGroupChat(lblGroup.BindDataValue.ToString(), lblGroup.BindDisplayValue.ToString());
复制代码
[attach]1130[/attach][attach]1131[/attach]
c.打开会话列表:StartConversationList()
在demo中登录后点击底部的“消息”按钮,便可查看聊天列表,如下:
[attach]1135[/attach]
注:用户聊天,群组聊天,打开会话列表必须在初始化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;
- }
复制代码
[attach]1132[/attach]
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
作者: dilen 时间: 2017-10-10 08:12
请问一下,RongYunIM有集成小米和华为推送吗?谢谢!
作者: Lincy.Lin 时间: 2017-10-12 09:53
1、IM中的推送是IM自己的,没有集成小米和华为推送,可在任何手机上进行消息推送
2、可以通过smobiler第三方插件集成小米和华为推送,第三方插件开发请查看:http://www.smobiler.com/guide/plugin.aspx
作者: dilen 时间: 2017-10-13 08:17
好的,谢谢!
作者: sxczzll 时间: 2017-12-3 23:51

关注
欢迎光临 Smobiler上海石磨_.NET移动开发平台 (https://www.smobiler.cn/) |
Powered by Discuz! X3.2 |