融云 SDK 集成详解 – Android Studio

来源:互联网 发布:淘宝pc端源代码 编辑:程序博客网 时间:2024/05/16 01:30

一 、下载 SDK

您可以到融云官方网站下载融云 SDK。融云 SDK 各部分功能以插件化的形式独立提供,开发者可以根据自己的需要,自由组合下载。各组件的功能如下:

IMKit       – 融云 IM 界面组件IMLib       – 融云 IM 通讯能力库CallKit     – 融云音视频界面组件CallLib     – 融云音视频核心组件LocationLib – 融云位置相关库PushLib     – 融云第三方推送库RedPacket   – 融云红包相关组件

二、以 Module 形式导入各组件

1、打开你的工程, File -> New -> Import Module

这里写图片描述

打开你从官网下载的融云 SDK,选择 IMKit 。如图:

这里写图片描述

根据你的需要,以同样的步骤导入SDK里的其它组件: IMLib, CallKit, CallLib, RedPacket。

2、打开应用的 build.gradle,在 dependencies 中添加 compile project(‘:IMKit’)。如图:

这里写图片描述

3、将 LocationLib 和 PushLib 里的 jar 包拷贝到你应用的 libs 目录下(如果不需要位置功能和小米推送,可跳过此步骤)。

这里写图片描述

4、打开 IMLib Module 的 AndroidManifest.xml 文件,把 meta-data RONG_CLOUD_APP_KEY 的值修改为你自己的 key,并将 AndroidManifest 中所有 host 改为你依赖项目的包名(此处指 app Module 的包名)。如图:

这里写图片描述

三、初始化 SDK

在 application 中调用 RongIM.init(this);

这步比较简单,在 app 的 Module 下创建 一个 App 继承 Application,注意 App 需要 在 AndroidManifest 中配置

   public class App extends Application {           @Override            public void onCreate() {             super.onCreate();              /**                * 初始化融云                */                RongIM.init(this);        }    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

四、 连接融云

在 MainActivity 中调用RongIM.connect() 连接融云。注意此处的 Token 为一个测试 Token,你需要换成你自己的 Token,这个 Token 还需要与 RONG_CLOUD_APP_KEY 匹配。

注意,在上线前请确认在 connect 方法 ConnectCallback 中通过 onTokenIncorrect 回调方法实现重新获取 Token 的逻辑。

            package rong.io.demo;          import android.support.v7.app.ActionBarActivity;          import android.os.Bundle;          import android.util.Log;          import android.view.Menu;          import android.view.MenuItem;          import io.rong.imkit.RongIM;        import io.rong.imlib.RongIMClient;        public class MainActivity extends ActionBarActivity {              @Override              protected void onCreate(Bundle savedInstanceState) {              super.onCreate(savedInstanceState);               setContentView(R.layout.activity_main);              String Token = “d6bCQsXiupB/4OyGkh+TOrI6ZiT8q7s0UEaMPWY0lMxmHdi1v/AAJxOma4aYXyaivfPIJjNHdE+FMH9kV/Jrxg==”;//test          /**         * IMKit SDK调用第二步          *          * 建立与服务器的连接          *          */          RongIM.connect(Token, new RongIMClient.ConnectCallback() {          @Override           public void onTokenIncorrect() {               //Connect Token 失效的状态处理,需要重新获取 Token            }            @Override            public void onSuccess(String userId) {                Log.e(“MainActivity”, “——onSuccess—-” + userId);            }            @Override            public void onError(RongIMClient.ErrorCode errorCode) {                Log.e(“MainActivity”, “——onError—-” + errorCode);            }        });    }           @Override            public boolean onCreateOptionsMenu(Menu menu) {                    getMenuInflater().inflate(R.menu.menu_main, menu);               return true;         }           @Override           public boolean onOptionsItemSelected(MenuItem item) {                  return super.onOptionsItemSelected(item);           }   }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

五、 集成单聊界面

由于单聊是一个 fragment,需要在 activity 加载的布局中,添加 fragment,并且在 AndroidManifest 中添加 intent-filter

1、 添加一个 Activity,此处命名为 ConversationActivity。

package rong.io.demo;           import android.annotation.TargetApi;           import android.os.Build;           import android.os.Bundle;           import android.support.v7.app.ActionBarActivity;           import android.view.MenuItem;          /**            * Created by Bob on 2015/4/16.          */          public class ConversationActivity extends ActionBarActivity {         private static final String TAG = ConversationActivity.class.getSimpleName();        @TargetApi(Build.VERSION_CODES.LOLLIPOP)        @Override       public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //唯一有用的代码,加载一个 layout          setContentView(R.layout.conversation);        //继承的是ActionBarActivity,直接调用 自带的 Actionbar,下面是Actionbar 的配置,如果不用可忽略…          getSupportActionBar().setTitle(“聊天”);        getSupportActionBar().setLogo(R.drawable.de_bar_logo);        getSupportActionBar().setDisplayHomeAsUpEnabled(true);        getSupportActionBar().setHomeAsUpIndicator(R.drawable.de_actionbar_back);    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        finish();        return super.onOptionsItemSelected(item);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

2、 查看布局 conversation.xml,如下:

  <?xml version=“1.0″ encoding=“utf-8″?>            <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”                 android:orientation=“vertical” android:layout_width=“match_parent”                 android:layout_height=“match_parent”>            <fragment               android:layout_width=“match_parent”                android:layout_height=“match_parent”                android:name=“io.rong.imkit.fragment.ConversationFragment”/>              </LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3、在 AndroidManifest 注册。注意需修改 host 为自己的包名,其他不需要修改。

 <activity android:name=“.ConversationActivity”>             <intent-filter>               <action android:name=“android.intent.action.VIEW” />                 <category android:name=“android.intent.category.DEFAULT” />                 <data                   android:host=“rong.io.demo”                   android:pathPrefix=“/conversation/”                   android:scheme=“rong” />           </intent-filter>       </activity>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

4、在 activity 中调用 RongIM.getInstance().startPrivateChat(MainActivity.this, “2462″, “hello”); 开启单聊,如下:

package rong.io.demo;           import android.support.v7.app.ActionBarActivity;           import android.os.Bundle;           import android.util.Log;           import android.view.Menu;           import android.view.MenuItem;           import io.rong.imkit.RongIM;         import io.rong.imlib.RongIMClient;          public class MainActivity extends ActionBarActivity {       @Override        protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        String Token = “d6bCQsXiupB/4OyGkh+TOrI6ZiT8q7s0UEaMPWY0lMxmHdi1v/AAJxOma4aYXyaivfPIJjNHdE+FMH9kV/Jrxg==”;//test          /**         * IMKit SDK调用第二步         *         * 建立与服务器的连接          *          */          RongIM.connect(Token, new RongIMClient.ConnectCallback() {            @Override            public void onSuccess(String userId) {                Log.e(“MainActivity”, “——onSuccess—-” + userId);            }            @Override            public void onError(RongIMClient.ErrorCode errorCode) {                Log.e(“MainActivity”, “——onError—-” + errorCode);            }        });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    @Override   public boolean onOptionsItemSelected(MenuItem item) {        /**         * 启动单聊          * context - 应用上下文。          * targetUserId - 要与之聊天的用户 Id。          * title - 聊天的标题,如果传入空值,则默认显示与之聊天的用户名称。          */          if (RongIM.getInstance() != null) {            RongIM.getInstance().startPrivateChat(MainActivity.this, “2462″, “hello”);        }        return super.onOptionsItemSelected(item);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

到此处 融云 SDK 单聊集成完了。

原创粉丝点击