融雲 SDK 集成詳解 – Android Studio

一 、下載 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 單聊集成完了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章