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