1. 程式人生 > >安卓接入融雲即時通訊的簡單步驟

安卓接入融雲即時通訊的簡單步驟

首先在融雲官網去註冊或者登陸,然後點選我的控制檯進入建立應用,如果已經有應用了,就把當前應用開啟,選擇這裡寫圖片描述
獲取到App Key。

融雲 SDK 2.0 整合與 1.+ 的版本有一些區別, 2.0 是以專案依賴的形式加入你的專案中。
使用 Android Studio 整合融雲,完成簡單的單人會話,大概需要 5步:

1、將 IMKitsdk 作為 Module 匯入到 Project 中。

2、在 application 中呼叫 RongIM.init(this) 。

3、在 activity 中連線融雲,RongIM.connect(token,callback)操作。

4、由於單聊是一個fragment,需要在 activity 載入的佈局中,新增 fragment,並且在 AndroidManifest 中新增 intent-filter 。

5、在 activity 中呼叫 RongIM.getInstance().startPrivateChat(MainActivity.this, “aa″, “hello”); 開啟單聊 。

第一步,去官網點選下載IMKitsdk下載對應的SDK,匯入studio中。

做好專案依賴以後到 Module IMkit 中開啟 AndroidManifest 修改 RONG_CLOUD_APP_KEY ,修改為你自己的 key,並將 AndroidManifest 中所有 host 改為你依賴專案的包名(此處指 Module app 的包名)。
這裡寫圖片描述

此時第一步已完成。

2、在 application 中呼叫 RongIM.init(this);

這步比較簡單,在 app 的 Module 下建立 一個 App 繼承 Application,注意 App 需要 在 AndroidManifest 中配置

public class App extends Application {  

    @Override  
    public void onCreate() {  
        super.onCreate();  
        /** 
         * 初始化融雲 
         */  
        RongIM.init(this);  
    }  
}  

3、在 activity 中連線融雲,RongIM.connect(token,callback)操作。

在 MainActivity 中做融雲的連線操作。注意此處的 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);  
    }  
} 

4、由於單聊是一個 fragment,需要在 activity 載入的佈局中,新增 fragment,並且在 AndroidManifest 中新增 intent-filter
4.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);  
    }  
} 

4.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>

4.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>

5、在 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);  
    }  
}

到此處 融雲 SDK 單聊整合完了,其他的跟這差不多。

這裡注意:
1). 建立應用的時候,選擇這裡寫圖片描述

2). 測試的時候選擇
這裡寫圖片描述
開發環境,
上線的時候選擇生產環境。
3). 測試的時候需要獲取token,在後在這裡:
這裡寫圖片描述

![這裡寫圖片描述](https://img-blog.csdn.net/20160428113409903)

在這裡獲取需要的token 和 使用者id,如果上線以後token和使用者id都是從服務端介面那裡獲取的。

獲取到需要的token 和 使用者id後,在程式碼中:

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);  
            }  
        }
          /** 
         * 啟動單聊 
         * context - 應用上下文。 
         * targetUserId - 要與之聊天的使用者 Id。 
         * title - 聊天的標題,如果傳入空值,則預設顯示與之聊天的使用者名稱稱。 
         */  
        if (RongIM.getInstance() != null) {  
            RongIM.getInstance().startPrivateChat(MainActivity.this, “aa″, “hello”);  
        }  

假如使用者id為aa和bb的兩個人需要建立聊天功能,就按照上面的辦法分別獲取到,aa和aa對應的token,把專案在手機中執行起來,然後在獲取到bb和bb對應的token,把專案執行在另外一個手機上,這樣兩個手機就可以進行單聊了。原始碼下載