用户
 找回密码
 立即注册

40

主题

340

帖子

1456

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1456
发表于 2017-9-26 15:33:42
仅支持打包版本,在打包时,需要提供融云的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”-“联系人”-“添加联系人”,如下:
  1. //在添加联系人列表模板中添加联系人
  2.                         ((SmoONE.UI.Im.frmAddConcentOrGroup)this.Form).im1.CreateUser(cInputDto.C_USER, lblUser.BindDisplayValue.ToString(), MobileResourceManager.DefaultImagePath +imgPortrait .BindDisplayValue .ToString ()+".png");


  3. <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”-“群组”-“创建群组”,如下:
  1. //创建群组
  2. im1.CreateGroup(guser1, groupid, cgroupInputDto.G_NAME);
复制代码





b、加入群组:JoinGroup(String[] userId, String groupId, String groupName)
  1. string group = this.textBox3.Text;
  2.             string user = this.textBox1.Text;
  3.             if (System.String.IsNullOrEmpty(user) == false && string.IsNullOrEmpty(group) == false)
  4.             {
  5.                 im1.JoinGroup(new string[] { user }, group, group);
  6.             }
  7.             else
  8.                 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”-“联系人”点击联系人列表某联系人,即可与用户聊天,如下:
  1. //在联系人模板中调用im用户聊天
  2.                 if (((SmoONE.UI.Im .frmConcent)this.Form).im1  != null)
  3.                 {
  4.                     ((SmoONE.UI.Im.frmConcent)this.Form).im1.StartPrivateChat(lblUser .BindDataValue .ToString (), lblUser.BindDisplayValue.ToString());
  5.                 }
复制代码

  
b.开始群组聊天:StartGroupChat(string groupid, string title)
在demo中,“登录”-"IM"-“群组”,点击群组列表,即可进行群组聊天
  1. //在群组列表模板中调用群组聊天
  2.                     ((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对象

  1. private void  im1_LoadUserInfo(object sender, IMLoadUserInfoArgs e)
  2.         {
  3.             IMUserEntry user = new IMUserEntry();
  4.             UserDetails userDetails = new UserDetails();
  5.             UserDetailDto userDetailDto = userDetails.getUser(e.UserId);
  6.             user.UserID = e.UserId;
  7.             if (userDetailDto != null)
  8.             {               
  9.                 user.UserName = userDetailDto.U_Name;
  10.                 user.PortraitUri = ".\\Image\\" + userDetailDto.U_Portrait + ".PNG";
  11.             }
  12.             //返回IMUserEntry
  13.             e.Result = user;
  14.         }
复制代码



2、LoadGroupInfo 获取群组信息,返回IMGroupEntry对象
  1. private void im1_LoadGroupInfo(object sender, IMLoadGroupInfoArgs e)
  2.         {
  3.             Smobiler.Core.Controls.RongIM.IMGroupEntry entity = new Smobiler.Core.Controls.RongIM.IMGroupEntry();
  4.             entity.GroupID = e.GroupId;
  5.             entity.GroupName = "name" + e.GroupId;
  6.             entity.PortraitUri = DefaultPortrait;
  7.             e.Result = entity;
  8.         }
复制代码



3、LoadGroupMembers 获取群组成员信息,返回string数组

  1.   private void  im1_LoadGroupMembers(object sender, IMLoadGroupMembersArgs e)
  2.         {
  3.             CGroupDto CGroupDto = AutofacConfig.cGroupService.GetByID(e.GroupId );
  4.             string[] groupusers ;
  5.             if (CGroupDto!=null )
  6.             {
  7.                 groupusers = CGroupDto.G_USER.Split(',');
  8.             }
  9.             else
  10.             {
  11.                 groupusers = new String[1];
  12.             }
  13.             e.Result =groupusers;
  14.         }
复制代码



4、TokenExpired Token过期后,重新初始化Token,返回string(token)
一般来说,token是永久不会过期的,但是不排除不过期的可能。token过期后,需要重置当前im的token。
  1. private void im1_TokenExpired(object sender, IMTokenExpiredArgs e)
  2.         {
  3.             im1.InitialToken(e.UserId, e.UserId, DefaultPortrait);
  4.             e.Result = im1.Token;
  5.         }
复制代码



5.IMInitial 获取token初始化回调,返回true时初始化成功,返回false初始化失败,例如:
  1. private void im1_Initial(object sender, IMInitialArgs e)
  2.         {
  3.             this.Toast("Initial" + e.InitialResult.ToString());
  4.         }
复制代码

im源码下载地址:https://github.com/comsmobiler/SmoONE


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用道具 举报 回复
发表于 2017-10-10 08:12:53
请问一下,RongYunIM有集成小米和华为推送吗?谢谢!
使用道具 举报 回复 支持 反对
发表于 2017-10-12 09:53:14
dilen 发表于 2017-10-10 08:12
请问一下,RongYunIM有集成小米和华为推送吗?谢谢!

1、IM中的推送是IM自己的,没有集成小米和华为推送,可在任何手机上进行消息推送
2、可以通过smobiler第三方插件集成小米和华为推送,第三方插件开发请查看:http://www.smobiler.com/guide/plugin.aspx
使用道具 举报 回复 支持 反对
发表于 2017-10-13 08:17:32
Lincy.Lin 发表于 2017-10-12 09:53
1、IM中的推送是IM自己的,没有集成小米和华为推送,可在任何手机上进行消息推送
2、可以通过smobiler第 ...

好的,谢谢!
使用道具 举报 回复 支持 反对
发表于 2017-12-3 23:51:30
使用道具 举报 回复
发新帖
您需要登录后才可以回帖 登录 | 立即注册