Skip to content

融云RongCloud_IM

cheyiliu edited this page Mar 11, 2015 · 7 revisions

总流程

初始化

  • DemoApplication.java
RongIM.init(this);//sdk要求

RongCloudEvent.init(this);//这里注册了一堆provider
        RongIM.setGetUserInfoProvider(this, true);//设置用户信息提供者。
        RongIM.setGetFriendsProvider(this);//设置好友信息提供者.
        RongIM.setGetGroupInfoProvider(this);//设置群组信息提供者。
        RongIM.setConversationBehaviorListener(this);//设置会话界面操作的监听器。
        RongIM.setLocationProvider(this);//设置地理位置提供者,不用位置的同学可以注掉此行代码

DemoContext.init(this);
	主要创建了demo的群组信息等

注册

  • httpRequest = DemoContext.getInstance().getDemoApi().register(email, nickname, password, this);
  • 在成功回调中会去启动登录页面,同时传入邮箱和密码

登录

  • loginHttpRequest = DemoContext.getInstance().getDemoApi().login(username, password, mDeviceId, this);
  • 在成功回调中会去作连接操作,RongIM.connect(user.getToken(), new ConnectCallback() {
    • 在链接操作的成功回调中, 注册消息接收监听器 RongCloudEvent.getInstance().setOtherListener();

会话

  • 启动群组会话见GroupListActivity.java的onItemClick
RongIMClient.Group group=mGroupListAdapter.getItem(position);
Uri uri = Uri.parse("rong://" + this.getPackageName()).buildUpon()
        .appendPath("conversation").appendPath(RongIMClient.ConversationType.GROUP.getName().toLowerCase())
        .appendQueryParameter("targetId", group.getId()).appendQueryParameter("title", group.getName()).build();

startActivity(new Intent(Intent.ACTION_VIEW, uri));
  • 启动私聊会话
RongIM.getInstance().startPrivateChat(UserInfoActivity.this, userId, title);//user ID

上面启动私聊会话的userId来自, RongCloudEvent.java

DEMO解读

  • 基于融云1.4.0
  • DemoApi提供了demo服务器的ip port信息,登录注册接口
  • DemoApplication负责全局的初始化
  • DemoContext主要角色是作为内容提供器,提供用户列表,群组列表等(真实的用户信息,群组信息,好友关系要自己搭建后台并实现)。
  • RongCloudEvent是相关事件的回调,如消息的接收和发送,接收器的注册等,提取聊天内容从而实现弹幕的关键点。
  • UI相关的: 注册RegisterActivity, 登录LoginActivity, 群组列表GroupListActivity等
  • SDK提供的会话界面: io.rong.imkit.RongActivity,xxFragment等,见manifest中的注册等

ui自定义1, based on Rong_IMLib_v1_4_0 带默认UI

sdk的会话列表+视频播放列表

  1. 自定义layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:src="@drawable/aaachecheche" />

    <fragment
        android:name="io.rong.imkit.fragment.ConversationFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
  1. 自定义activity,并用上述包装了融云fragment的layout

  2. 注册activity,记得在demo原来处理这个intent的activity里去掉相应的intent-filter

             <category android:name="android.intent.category.DEFAULT" />
    
             <data
                 android:host="io.rong.imkit.demo"
                 android:pathPrefix="/conversation/group"
                 android:scheme="rong" />
         </intent-filter>
    

会话列表的UI调整

ui自定义2, based on Rong_IMKit_v1_4_0 不带任何UI

  • 这个库只提供基本的通讯能力,UI需全部自己实现

提取消息内容,实现弹幕

  • 核心实现见RongCloudEvent.java,具体见onReceived()方法
  • 注册监听是在登录页面的成功回调中, RongCloudEvent.getInstance().setOtherListener(); line 209

参考链接

Clone this wiki locally