效果图:

开发前我们需要先去官网注册:融云官网

只需输入应用名称和描述即可创建成功。

为了集成更加方便,我们下载官网的SDK,选择IMKit包,因为该包包含了聊天所需的组件。

下载成功后在我们的项目,以Module的形式引入IMKit,并依赖。

于此环境已经搭建完成,然后下面开始我们的代码编写:

public class App extends Application {

@Override

public void onCreate() {

super.onCreate();

RongIM.init(this);//初始化,然后记得在清单文件配置此类。

}

}

复制代码在MainActivity中进行服务器连接。

由于测试环境,所以,token我们直接去融云官网获取,融云个人中心我的应用,左侧有个API调试功能,

随便输入一个用于测试的id,然后点击提交。

然后用此token去调用方法连接服务器:

private void connect(String token) {

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

@Override

public void onTokenIncorrect() {

Log.e("LoginActivity", "--onTokenIncorrect");

}

@Override

public void onSuccess(String userid) {

Log.e("LoginActivity", "--onSuccess--" + userid);

Toast.makeText(MainActivity.this, "登录成功,用户:" + userid, Toast.LENGTH_SHORT).show();

//服务器连接成功,跳转消息列表

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

}

@Override

public void onError(RongIMClient.ErrorCode errorCode) {

Log.e("LoginActivity", "--onError");

}

});

}

复制代码public class ConversationListActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//加载视图

setContentView(R.layout.subconversationlist);

ConversationListFragment listFragment = (ConversationListFragment) ConversationListFragment.instantiate(this, ConversationListFragment.class.getName());

Uri uri = Uri.parse("rong://" + getApplicationInfo().packageName).buildUpon()

.appendPath("conversationlist")

.appendQueryParameter(Conversation.ConversationType.PRIVATE.getName(), "false")

.appendQueryParameter(Conversation.ConversationType.GROUP.getName(), "false")

.appendQueryParameter(Conversation.ConversationType.DISCUSSION.getName(), "false")

.appendQueryParameter(Conversation.ConversationType.PUBLIC_SERVICE.getName(), "false")

.appendQueryParameter(Conversation.ConversationType.SYSTEM.getName(), "false")

.build();

listFragment.setUri(uri);

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

//将融云的Fragment界面加入到我们的页面。

transaction.add(R.id.subconversationlist, listFragment);

transaction.commitAllowingStateLoss();

//为了更加直观,服务器建立连接后进入此界面,直接调用如下代码,执行单人聊天,第二个参数代表对方用户ID,第三个参数代表聊天窗口标题,为了方便测试聊天,需要两个手机测试,所以登陆第一个token的用户与第二个用户"chao"建立聊天,在运行第二个手机之前,记得改"chao"的token登录,然后聊天这里改为第一个的ID"text"。

RongIM.getInstance().startPrivateChat(this, "chao", "聊天中");

}

}

复制代码

subconversationlist.xml布局里面只包含一个FrameLayout:

android:id="@+id/subconversationlist"

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

android:layout_width="match_parent"

android:layout_height="match_parent" />

复制代码

到这里聊天逻辑就基本处理完了,然后我们再进行最后的配置,配置聊天界面:

public class ConversationActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.conversation);

String sName = getIntent().getData().getQueryParameter("title");//获取昵称

setTitle("与" + sName + "聊天中");

}

}

复制代码

聊天布局里加入fragment,注意,这里name是固定的:

android:id="@+id/conversation"

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

android:layout_width="match_parent"

android:layout_height="match_parent" />

复制代码清单文件配置,这里需要改动的几个地方,RONG_CLOUD_APP_KEY=你自己的key,android:host="chao.example.instantchat" 并且host内容必须改为自己项目的包名。

package="chao.example.instantchat">

android:name=".App"

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:supportsRtl="true"

android:theme="@style/AppTheme">

android:name=".activity.ConversationListActivity"

android:launchMode="singleTask"

android:screenOrientation="portrait"

android:windowSoftInputMode="stateHidden|adjustResize">

android:host="chao.example.instantchat"

android:path="/conversationlist"

android:scheme="rong" />

android:name=".ConversationActivity"

android:launchMode="singleTop"

android:screenOrientation="portrait"

android:windowSoftInputMode="stateHidden|adjustResize">

android:host="chao.example.instantchat"

android:pathPrefix="/conversation/"

android:scheme="rong" />

android:name="android.support.v4.content.FileProvider"

android:authorities="chao.example.instantchat.FileProvider"

android:exported="false"

android:grantUriPermissions="true">

android:name="android.support.FILE_PROVIDER_PATHS"

android:resource="@xml/rc_file_path" />

android:name="RONG_CLOUD_APP_KEY"

android:value="tdrvipkstfwj5" />

android:name="io.rong.imlib.ipc.RongService"

android:exported="true"

android:process=":ipc" />

android:name="io.rong.imlib.ReConnectService"

android:exported="true" />

android:name="io.rong.imlib.ConnectChangeReceiver"

android:exported="true" />

android:name="io.rong.imlib.HeartbeatReceiver"

android:process=":ipc" />

复制代码

然后运行项目,两个APP分别用两个token,打包并安装到手机上,运行如图:

android聊天会话代码,Android 即时聊天-融云IM集成。相关推荐

  1. 融云android聊天界面,Android 融云IM集成以及使用详解(一)

    Android 融云IM集成以及使用详解(一) 集成 1.具体的集成步骤就不在详细介绍,我们只说干货,附上融云IM官方文档地址,里面有更为详细的集成介绍 https://www.rongcloud.c ...

  2. Android 融云IM集成以及使用详解(二)

    Android 融云IM集成以及使用详解(二) 上篇讲解了集成和好友列表和消息记录的使用,这篇将讲解聊天界面和群聊界面的使用 先附上一张效果图 先介绍布局文件 <LinearLayout xml ...

  3. android 融云sdk集成,使用融云SDK集成

    使用融云开始还是遇到了很多的坑的,特别是看不太明白官方文档.或许自己不够有耐心. 期间还遇到了许多bug,比如,明明配置的没问题了,可我的手机还是连不上融云. 后来还是在融云的知识库中找到了解决办法, ...

  4. 融云android sdk文档,使用融云SDK集成

    使用融云开始还是遇到了很多的坑的,特别是看不太明白官方文档.或许自己不够有耐心. 期间还遇到了许多bug,比如,明明配置的没问题了,可我的手机还是连不上融云. 后来还是在融云的知识库中找到了解决办法, ...

  5. Android使用XMPP框架实现即时聊天(IM)功能(Openfire + Smack)

    目录 概述 前期准备 客户端使用Smack 权限配置.压缩包导入等 客户端连接到服务器 用户注册/登录功能 离线消息接收 接收/发送消息 后记 概述 即时聊天功能是许多APP的刚需.QQ.微信等用的都 ...

  6. 【Android】基于Socket的即时聊天(群聊)

    近来感觉秋招无望,学习Socket的时候,便做了个基于Socket的群聊工具: 先看看最终效果吧 项目GitHub通道(详细代码请自行copy) 如何利用Socket通信 socket又称为" ...

  7. android.intent.action.view 融云,Android 融云SDK集成单聊

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

  8. 融云 SDK 集成详解 – Android Studio

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

  9. android小球移动代码,Android自定义圆形View实现小球跟随手指移动效果

    本文实例为大家分享了Android实现小球跟随手指移动效果的具体代码,供大家参考,具体内容如下 一. 需求功能 手指在屏幕上滑动,红色的小球始终跟随手指移动. 实现的思路: 1)自定义View,在on ...

最新文章

  1. batchelor包去除单细胞RNA-seq数据批次效应
  2. 算法导论 第二部分——排序和顺序统计量
  3. table 在网页无法顶到头部问题
  4. web前端开发怎么样学习?看这份web前端学习路线
  5. java 字符串 内存_java – 字符串文字和永久生成内存区域
  6. Python检测U盘插入、自动复制文件并写入新文件
  7. 【读书笔记】【独立思考】2018-04-03(2)
  8. Python之爬取安居客网二手房小区详情页数据
  9. 管网平差c语言编程,给水管网平差计算步骤
  10. c语言中 c2059错误是,错误C2059:语法错误:'字符串'
  11. 为你的掘金和 GitHub 设定个性域名
  12. 一周小结:webgis—北京核酸检测—demo
  13. 产业分析:中国债券市场投资手册
  14. 给AWStats关键词统计增加去百度,谷歌等搜索引擎的站内查询链接
  15. A005-AS项目结构解析
  16. UTC、CST、GMT等时区详解
  17. git、github保姆级教程(手把手交)以及如何在github上提交pr,参与开源项目
  18. 安装oracle提示删除asm服务,卸载 ASM
  19. 大数据平台下的数据治理
  20. 如何移除 “顺网云盘”

热门文章

  1. 知圈专栏 | 人工智能的“智能”是什么?— 智能的原理(上)
  2. Angular2环境配置
  3. [计算机视觉]-从ShuffleNet V2来看,为什么有些FLOPs小的模型在实际推理过程中所花费的时间更长/速度更慢?
  4. Springboot+Jwt+vue的水果销售系统
  5. 2021美国大学生数学建模比赛详细思路/2021美赛思路
  6. suricata 检测规则编写
  7. 2019养老产业政策全解读:2019年,中国养老元年丨60加养老观察
  8. 毫米波雷达编程 csdn_这周在我们的雷达上:聚合物,图案和编程器
  9. MSChart使用技巧总结
  10. 为什么人人都要学编程