融云 SDK 集成详解 – Android Studio

融云 SDK 集成详解 – Android Studio

一  下载 SDK

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

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

 

二  以 Module 形式导入各组件

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

integrated_5

 

 

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

2@2x

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

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

integrated_6

 

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

4@2x

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

integrated_7

 

三 初始化 SDK

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

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

1        public class App extends Application {
2

3            @Override

4             public void onCreate() {
5             super.onCreate();
6              /**
7                * 初始化融云 
8               */  
9              RongIM.init(this);
10        }
11    }

 

四 连接融云

 

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

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

1            package rong.io.demo;
2
3          import android.support.v7.app.ActionBarActivity;
4          import android.os.Bundle;
5          import android.util.Log;
6          import android.view.Menu;
7          import android.view.MenuItem;
8
9          import io.rong.imkit.RongIM;
10        import io.rong.imlib.RongIMClient;
11
12
13        public class MainActivity extends ActionBarActivity {
14
15

16              @Override

17              protected void onCreate(Bundle savedInstanceState) {
18              super.onCreate(savedInstanceState);
19               setContentView(R.layout.activity_main);
20
21              String Token = “d6bCQsXiupB/4OyGkh+TOrI6ZiT8q7s0UEaMPWY0lMxmHdi1v/AAJxOma4aYXyaivfPIJjNHdE+FMH9kV/Jrxg==”;//test  
22        /**
23         * IMKit SDK调用第二步 
24         * 
25         * 建立与服务器的连接 
26         * 
27         */  
28        RongIM.connect(Token, new RongIMClient.ConnectCallback() {
29          @Override
30           public void onTokenIncorrect() {
31               //Connect Token 失效的状态处理,需要重新获取 Token
32            }
33            @Override
34            public void onSuccess(String userId) {
35                Log.e(“MainActivity”“——onSuccess—-” + userId);
36            }
37
38            @Override
39            public void onError(RongIMClient.ErrorCode errorCode) {
40                Log.e(“MainActivity”“——onError—-” + errorCode);
41            }
42        });
43    }
44

45           @Override

46            public boolean onCreateOptionsMenu(Menu menu) {
47                    getMenuInflater().inflate(R.menu.menu_main, menu);
48               return true;
49         }
50

51           @Override

52           public boolean onOptionsItemSelected(MenuItem item) {
53
54                  return super.onOptionsItemSelected(item);
55           }
56   }

 

五 集成单聊界面

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

 

1、 添加一个 Activity,此处命名为 ConversationActivity。
1            package rong.io.demo;
2
3           import android.annotation.TargetApi;
4           import android.os.Build;
5           import android.os.Bundle;
6           import android.support.v7.app.ActionBarActivity;
7           import android.view.MenuItem;
8
9          /** 
10           * Created by Bob on 2015/4/16. 
11         */  
12        public class ConversationActivity extends ActionBarActivity {
13
14         private static final String TAG = ConversationActivity.class.getSimpleName();
15
16        @TargetApi(Build.VERSION_CODES.LOLLIPOP)

17        @Override

18       public void onCreate(Bundle savedInstanceState) {
19
20        super.onCreate(savedInstanceState);
21        //唯一有用的代码,加载一个 layout  
22        setContentView(R.layout.conversation);
23        //继承的是ActionBarActivity,直接调用 自带的 Actionbar,下面是Actionbar 的配置,如果不用可忽略…  
24        getSupportActionBar().setTitle(“聊天”);
25        getSupportActionBar().setLogo(R.drawable.de_bar_logo);
26        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
27        getSupportActionBar().setHomeAsUpIndicator(R.drawable.de_actionbar_back);
28    }
29

30    @Override

31    public boolean onOptionsItemSelected(MenuItem item) {
32        finish();
33        return super.onOptionsItemSelected(item);
34    }
35}

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

1          <?xml version=“1.0″ encoding=“utf-8″?>  

2          <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”  
3               android:orientation=“vertical” android:layout_width=“match_parent”  
4               android:layout_height=“match_parent”>  
5

6          <fragment

7               android:layout_width=“match_parent”  
8              android:layout_height=“match_parent”  
9              android:name=“io.rong.imkit.fragment.ConversationFragment”/>  
10
11            </LinearLayout>

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

1           <activity android:name=“.ConversationActivity”>  

2           <intent-filter>

3               <action android:name=“android.intent.action.VIEW” />  
4
5               <category android:name=“android.intent.category.DEFAULT” />  
6
7               <data
8                   android:host=“rong.io.demo”
9                   android:pathPrefix=“/conversation/”
10                   android:scheme=“rong” />

11           </intent-filter>

12
13       </activity>

4、在 activity 中调用  RongIM.getInstance().startPrivateChat(MainActivity.this, “2462″, “hello”); 开启单聊,如下:
1           package rong.io.demo;
2
3           import android.support.v7.app.ActionBarActivity;
4           import android.os.Bundle;
5           import android.util.Log;
6           import android.view.Menu;
7           import android.view.MenuItem;
8
9           import io.rong.imkit.RongIM;
10         import io.rong.imlib.RongIMClient;
11
12
13          public class MainActivity extends ActionBarActivity {
14
15

16       @Override

17        protected void onCreate(Bundle savedInstanceState) {
18        super.onCreate(savedInstanceState);
19        setContentView(R.layout.activity_main);
20
21        String Token = “d6bCQsXiupB/4OyGkh+TOrI6ZiT8q7s0UEaMPWY0lMxmHdi1v/AAJxOma4aYXyaivfPIJjNHdE+FMH9kV/Jrxg==”;//test  
22        /**
23         * IMKit SDK调用第二步 
24         * 
25         * 建立与服务器的连接 
26         * 
27         */  
28        RongIM.connect(Token, new RongIMClient.ConnectCallback() {
29            @Override
30            public void onSuccess(String userId) {
31                Log.e(“MainActivity”“——onSuccess—-” + userId);
32            }
33
34            @Override
35            public void onError(RongIMClient.ErrorCode errorCode) {
36                Log.e(“MainActivity”“——onError—-” + errorCode);
37            }
38        });
39    }
40

41    @Override

42    public boolean onCreateOptionsMenu(Menu menu) {
43        getMenuInflater().inflate(R.menu.menu_main, menu);
44        return true;
45    }
46

47    @Override

48    public boolean onOptionsItemSelected(MenuItem item) {
49
50        /**
51         * 启动单聊 
52         * context – 应用上下文。 
53         * targetUserId – 要与之聊天的用户 Id。 
54         * title – 聊天的标题,如果传入空值,则默认显示与之聊天的用户名称。 
55         */  
56        if (RongIM.getInstance() != null) {
57            RongIM.getInstance().startPrivateChat(MainActivity.this“2462″“hello”);
58        }
59
60        return super.onOptionsItemSelected(item);
61    }
62}

 

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