android集成融云sdk,Android中如何集成融云SDK单聊

1. 首先依赖下载的工程→Rong_Cloud_Android_IMKit_SDK_v2_7_0_dev,依赖工程中需要修改AndroidManifest.xml,把RONG_CLOUD_APP_KEY换成我们自己申请应用的AppKey。

2.在应用程序主入口加入一下代码package com.bwie.test.rongyu;

import android.app.ActivityManager;

import android.app.Application;

import android.content.Context;

import io.rong.imkit.RongIM;

/**

* Created by lenovo on 2016/8/22.

*/

public class App extends Application{

@Override

public void onCreate() {

super.onCreate();

/**

* OnCreate 会被多个进程重入,这段保护代码,确保只有您需要使用 RongIM 的进程和 Push 进程执行了 init。

* io.rong.push 为融云 push 进程名称,不可修改。

*/

if (getApplicationInfo().packageName.equals(getCurProcessName(getApplicationContext())) ||

"io.rong.push".equals(getCurProcessName(getApplicationContext()))) {

/**

* IMKit SDK调用第一步 初始化

*/

RongIM.init(this);

}

}

/**

* 获得当前进程的名字

*

* @param context

* @return 进程号

*/

public static String getCurProcessName(Context context) {

int pid = android.os.Process.myPid();

ActivityManager activityManager = (ActivityManager) context

.getSystemService(Context.ACTIVITY_SERVICE);

for (ActivityManager.RunningAppProcessInfo appProcess : activityManager

.getRunningAppProcesses()) {

if (appProcess.pid == pid) {

return appProcess.processName;

}

}

return null;

}

}在主MainActivity中,加入以下代码(这一快需要注意的是启动会话界面中Userid,Usertitle)

package com.bwie.test.rongyu;

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

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;

import io.rong.imlib.model.Conversation;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

String token="owk23zwVfr2x8YG4BUkyoFstiWBEn/V5QzmSXISTmQ//sAl2Oo2E5OyI6Kn9TAKIo2uMLF18p45UERgUG7vxQg==";

connect(token);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

//启动会话界面

if (RongIM.getInstance() != null)

RongIM.getInstance().startPrivateChat(this, "1234", "");

//启动会话列表界面

if (RongIM.getInstance() != null)

RongIM.getInstance().startConversationList(this);

//启动聚合会话列表界面

if (RongIM.getInstance() != null)

RongIM.getInstance().startSubConversationList(this, Conversation.ConversationType.GROUP);

return super.onOptionsItemSelected(item);

}

/**

* 建立与融云服务器的连接

*

* @param token

*/

private void connect(String token) {

if (getApplicationInfo().packageName.equals(App.getCurProcessName(getApplicationContext()))) {

/**

* IMKit SDK调用第二步,建立与服务器的连接

*/

RongIM.connect(token, new RongIMClient.ConnectCallback() {

/**

* Token 错误,在线上环境下主要是因为 Token 已经过期,您需要向 App Server 重新请求一个新的 Token

*/

@Override

public void onTokenIncorrect() {

Log.d("wtt", "--onTokenIncorrect");

}

/**

* 连接融云成功

* @param userid 当前 token

*/

@Override

public void onSuccess(String userid) {

Log.d("wtt", "--onSuccess" + userid);

startActivity(new Intent(MainActivity.this, HuiHuaListActivity.class));

finish();

}

/**

* 连接融云失败

* @param errorCode 错误码,可到官网 查看错误码对应的注释

*/

@Override

public void onError(RongIMClient.ErrorCode errorCode) {

Log.d("wtt", "--onError" + errorCode);

}

});

}

}

}在会话列表中

package com.bwie.test.rongyu;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

public class HuiHuaListActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_hui_hua_list);

}

}在会话界面中

package com.bwie.test.rongyu;

import android.support.v7.app.ActionBarActivity;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import io.rong.imlib.model.Conversation;

public class HuihuaActivity extends ActionBarActivity {

/**

* 目标 Id

*/

private String mTargetId;

/**

* 刚刚创建完讨论组后获得讨论组的id 为targetIds,需要根据 为targetIds 获取 targetId

*/

private String mTargetIds;

/**

* 会话类型

*/

private Conversation.ConversationType mConversationType;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_huihua);

}

}

在activity_hui_hua_list.xml

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.bwie.test.rongyu.HuiHuaListActivity">

android:id="@+id/conversationlist"

android:name="io.rong.imkit.fragment.ConversationListFragment"

android:layout_width="match_parent"

android:layout_height="match_parent" />

在activity_huihua.xml中

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.bwie.test.rongyu.HuihuaActivity">

android:id="@+id/conversation"

android:name="io.rong.imkit.fragment.ConversationFragment"

android:layout_width="match_parent"

android:layout_height="match_parent" />

在清单文件中(这在Data——>host记住要修改自己的Host,否则会报错,说找不到隐士跳转的对象)

package="com.bwie.test.rongyu">

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:name=".App"

android:supportsRtl="true"

android:theme="@style/AppTheme">

android:name=".HuiHuaListActivity"

android:screenOrientation="portrait"

android:windowSoftInputMode="stateHidden|adjustResize">

android:host="com.bwie.test.rongyu"

android:pathPrefix="/conversationlist"

android:scheme="rong" />

android:name=".HuihuaActivity"

android:screenOrientation="portrait"

android:windowSoftInputMode="stateHidden|adjustResize">

android:host="com.bwie.test.rongyu"

android:pathPrefix="/conversation/"

android:scheme="rong" />

以上就是简单集成。如果需要实现两个人在手机上安装同一个AppKey的应用,只需要修改一下API上的Token就OK了!以下就是官网的说明。

userId : 每一个用户对应一个 userId,这个 userId 是您维护的,所以您可以直接赋值,两个您的的用户通信,对于融云来说就是两个 userId 间通讯。

你可能感兴趣的:(android集成融云sdk)