融云android聊天界面,Android 融云IM集成以及使用详解(一)
Android 融云IM集成以及使用详解(一)
集成
1.具体的集成步骤就不在详细介绍,我们只说干货,附上融云IM官方文档地址,里面有更为详细的集成介绍
https://www.rongcloud.cn/docs/#necessary
集成后效果
2.AndroidManifest配置融云需要的配置
3.融云结构(各项目结构不同请自行参考)
4.融云需要进行的配置
需要**在BaseApplication进行的配置
//初始化融云
RongIM.init(this);
//初始化聊天界面底部的自定义按钮 具体在下面会详细介绍
RongExtensionManager.getInstance().registerExtensionModule(RecognizeExtensionModule2.getInstence());
//设置融云的消息记录的昵称和头像的内容提供者
RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() {
@Override
public UserInfo getUserInfo(String userId) {
LogUtils.e("我执行了》》》》》》"+userId);//提供的是融云的ID
UserInfo userInfo = new UserInfo(userId, "", null);
//在这里通过融云ID向自己的后台请求用户数据
return userInfo;
}
}, true);
//群聊的用户数据提供者 同上
RongIM.setGroupUserInfoProvider(new RongIM.GroupUserInfoProvider() {
@Override
public GroupUserInfo getGroupUserInfo(String s, String s1) {
//设置数据
RongIM.getInstance().refreshGroupInfoCache(new Group(groupid, nickName, Uri.parse(avatar)));
return getGroupUserInfos(s, s1); //向自己后台获取
}
}, true);
//融云的配置
options = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.de_default_portrait)
.showImageOnFail(R.drawable.de_default_portrait)
.showImageOnLoading(R.drawable.de_default_portrait)
.displayer(new FadeInBitmapDisplayer(300))
.cacheInMemory(true)
.cacheOnDisk(true)
.build();
2.使用步骤
在自己的登录界面 调用自己的登录接口后调用融云的连接接口
//Token是自己后台返回
private void connect(String rongCloudToken, String nickName, String phono) {
if (getApplicationInfo().packageName.equals(getCurProcessName(getApplicationContext()))) {
RongIM.connect(rongCloudToken, new RongIMClient.ConnectCallback() {
/**
* Token 错误。可以从下面两点检查
* 1. Token 是否过期,如果过期您需要向 App Server 重新请求一个新的 Token
* 2. token 对应的 appKey 和工程里设置的 appKey 是否一致
*/
@Override
public void onTokenIncorrect() {
ToastView("--------------------Token相关问题");
}
/**
* 连接融云成功
* @param userid 当前 token 对应的用户 id
*/
@Override
public void onSuccess(String userid) {
LoadingView.dismissLoading(mShowLoading);
Log.e("tag", "--------------------融云登录成功>>>用户id: " + userid);
Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
intent.putExtra("noticeBean", gson.toJson(noticeBean));
startActivity(intent);
//设置自己的用户信息
RongIM.getInstance().refreshUserInfoCache(new UserInfo(userid, nickName, Uri.parse(phono)));
finish();
}
/**
* 连接融云失败
* @param errorCode 错误码,可到官网 查看错误码对应的注释
*/
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
ToastView("--------------------登录失败" + errorCode);
}
});
}
}
2.消息界面
分为消息记录和好友界面 先附上两张图方便下面解释
额…表示不全(拼音分类的还有列表哈)
效果看了下面讲讲具体的实现步骤(主界面就不用详细介绍了 ViewPage + Fragment)
private void initFragment() {
mFragments = new ArrayList<>();
Fragment conversationFragment = new MessageFragment();
FriendFragment friendFragment = new FriendFragment();
mFragments.add(conversationFragment);
mFragments.add(friendFragment);
}
先看看消息记录的Fragment怎么实现的
XML文件:
//重要代码
if(fragment != null){
transaction.remove(fragment);
}
//初始化融云自己的界面
fragment = initConversationList();
//添加到布局
transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.mConversation, fragment);
transaction.commit();
/**
* 初始化会话列表
*
* @return
*/
private Fragment initConversationList() {
if (mConversationListFragment == null) {
ConversationListFragment listFragment = new ConversationListFragment();
listFragment.setAdapter(new ConversationListAdapterEx(RongContext.getInstance()));
Uri uri;
if (isDebug) {
uri = Uri.parse("rong://" + getActivity().getApplicationInfo().packageName).buildUpon()
.appendPath("conversationlist")
.appendQueryParameter(Conversation.ConversationType.PRIVATE.getName(), "false") //设置私聊会话是否聚合显示
.appendQueryParameter(Conversation.ConversationType.GROUP.getName(), "true")//群组
.appendQueryParameter(Conversation.ConversationType.PUBLIC_SERVICE.getName(), "false")//公共服务号
.appendQueryParameter(Conversation.ConversationType.APP_PUBLIC_SERVICE.getName(), "false")//订阅号
.appendQueryParameter(Conversation.ConversationType.SYSTEM.getName(), "true")//系统
.appendQueryParameter(Conversation.ConversationType.DISCUSSION.getName(), "true")
.build();
mConversationsTypes = new Conversation.ConversationType[]{Conversation.ConversationType.PRIVATE,
Conversation.ConversationType.GROUP,
Conversation.ConversationType.PUBLIC_SERVICE,
Conversation.ConversationType.APP_PUBLIC_SERVICE,
Conversation.ConversationType.SYSTEM,
Conversation.ConversationType.DISCUSSION
};
} else {
uri = Uri.parse("rong://" + getActivity().getApplicationInfo().packageName).buildUpon()
.appendPath("conversationlist")
.appendQueryParameter(Conversation.ConversationType.PRIVATE.getName(), "false") //设置私聊会话是否聚合显示
.appendQueryParameter(Conversation.ConversationType.GROUP.getName(), "true")//群组
.appendQueryParameter(Conversation.ConversationType.PUBLIC_SERVICE.getName(), "false")//公共服务号
.appendQueryParameter(Conversation.ConversationType.APP_PUBLIC_SERVICE.getName(), "false")//订阅号
.appendQueryParameter(Conversation.ConversationType.SYSTEM.getName(), "true")//系统
.build();
mConversationsTypes = new Conversation.ConversationType[]{Conversation.ConversationType.PRIVATE,
Conversation.ConversationType.GROUP,
Conversation.ConversationType.PUBLIC_SERVICE,
Conversation.ConversationType.APP_PUBLIC_SERVICE,
Conversation.ConversationType.SYSTEM
};
}
listFragment.setUri(uri);
mConversationListFragment = listFragment;
return listFragment;
} else {
return mConversationListFragment;
}
}
好友列表的Fragment参考Dome中就OK 里面的代码可以直接Copy过来稍加修改就行,附上一张图片
最后附上融云提供的Dome地址,里面很多东西 可以自行去研究
https://github.com/sealtalk/sealtalk-android
下篇将讲解单聊聊天界面以及群里聊天界面的使用以及坑…
融云android聊天界面,Android 融云IM集成以及使用详解(一)相关推荐
- Android 融云IM集成以及使用详解(二)
Android 融云IM集成以及使用详解(二) 上篇讲解了集成和好友列表和消息记录的使用,这篇将讲解聊天界面和群聊界面的使用 先附上一张效果图 先介绍布局文件 <LinearLayout xml ...
- Android 聊天界面对话
转载请注明出处:http://blog.csdn.net/htwhtw123/article/details/77510010 实现Android 聊天界面对话 ,可以设计成接受到的消息在左显示,发送 ...
- Android 聊天界面背景图片不顶上去内容顶上去解决方法
Android 聊天界面背景图片被输入法 字数398 阅读923 评论0 喜欢14 相信做过android开发的都知道,当界面中有editText的时候,输入法可能导致把当前界面整个给顶上去,这 ...
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- Android基础入门教程——2.3.1 TextView(文本框)详解
Android基础入门教程--2.3.1 TextView(文本框)详解 标签(空格分隔): Android基础入门教程 本节引言: 学习完Android中的六大布局,从本节开始我们来一个个讲解And ...
- Android Studio CPU profiler性能分析工具介绍和使用详解
Android Studio CPU profiler性能分析工具介绍和使用详解 CPU profiler介绍 Android Studio CPU 性能剖析器可实时检查应用的 CPU 使用率和线程活 ...
- android自定义圆角进度条,Android自定义进度条的圆角横向进度条实例详解
1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的: invalidate()方法 RectF方法的应用 onMeasure方法的应用 2.原理 画3层圆角矩形,底层为黑色, ...
- android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...
Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...
- Android studio 多渠道(多环境)打包grade配置详解
Android studio 多渠道(多环境)打包grade配置详解 场景:开发app,我们需要两套环境或者两套环境以上的apk,每套环境的apk分两个版本debug版和release版. 公司有套平 ...
最新文章
- ubuntu 在线安装mysql_Ubuntu下安装MySQL5.6
- php mysql 500错误日志_服务器出现500错误的时候,让PHP显示错误信息
- 综述 | 卷积神经网络:从基础技术到研究前景
- 计算机操作员五级知识点,计算机操作员五级.doc
- 解决h264bitstream的一个bug
- Pandas Series interpolate
- 乐pad平板电脑_2020年双十一高性价比平板电脑推荐(包含苹果ipad,安卓华为,微软surface)...
- android layout_gravity失效的问题
- ASP.NET应用开发心得
- 智能信贷产业进入爆发期,银行如何破解微贷难题?
- 【POJ 3041】Asteroids【网络流 —— 最小点覆盖】
- 有关Altera 的CPLD工程编译报错的解决方法
- video.js在react中实现视频播放(video.js)
- 轩辕剑【超越XISE菜刀的shell管理工具】
- tcp ip通讯协议测试软件6,实验6 TCPIP协议属性设置
- 日拱一卒,“功不唐捐
- vc 调用matlab figure 画图
- 插入式CAN总线隔离适配器LCAN-Opto在高空作业平台上隔离干扰、调理信号的应用案例介绍
- 全新安装Windows10系统(PE下)
- 起航---开发基于国产华为鸿蒙操作系统的APP
热门文章
- Python菜鸟起飞day11_ 线程、进程、协程(一、多线程)
- 【车载以太网】【AVB/TSN】概述
- JZOJ 5988 珂学计树题 (Burnside引理)
- 判断一棵树是否是二叉搜索树
- selenium爬取优酷页面并下载图片
- 2、刚接手一个新团队要做什么?
- git clone: SSL certificate problem: self signed certificate 报错解决
- 操作系统页面置换算法之先进先出(FIFO)页面置换算法(C语言实现)
- 神州租车将迎来新的发展机遇
- 台式计算机演变,电脑的发展史,体验不一样的电脑时代【图文】