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集成以及使用详解(一)相关推荐

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

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

  2. Android 聊天界面对话

    转载请注明出处:http://blog.csdn.net/htwhtw123/article/details/77510010 实现Android 聊天界面对话 ,可以设计成接受到的消息在左显示,发送 ...

  3. Android 聊天界面背景图片不顶上去内容顶上去解决方法

    Android 聊天界面背景图片被输入法 字数398  阅读923  评论0  喜欢14 相信做过android开发的都知道,当界面中有editText的时候,输入法可能导致把当前界面整个给顶上去,这 ...

  4. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  5. Android基础入门教程——2.3.1 TextView(文本框)详解

    Android基础入门教程--2.3.1 TextView(文本框)详解 标签(空格分隔): Android基础入门教程 本节引言: 学习完Android中的六大布局,从本节开始我们来一个个讲解And ...

  6. Android Studio CPU profiler性能分析工具介绍和使用详解

    Android Studio CPU profiler性能分析工具介绍和使用详解 CPU profiler介绍 Android Studio CPU 性能剖析器可实时检查应用的 CPU 使用率和线程活 ...

  7. android自定义圆角进度条,Android自定义进度条的圆角横向进度条实例详解

    1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的: invalidate()方法 RectF方法的应用 onMeasure方法的应用 2.原理 画3层圆角矩形,底层为黑色, ...

  8. android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...

    Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...

  9. Android studio 多渠道(多环境)打包grade配置详解

    Android studio 多渠道(多环境)打包grade配置详解 场景:开发app,我们需要两套环境或者两套环境以上的apk,每套环境的apk分两个版本debug版和release版. 公司有套平 ...

最新文章

  1. ubuntu 在线安装mysql_Ubuntu下安装MySQL5.6
  2. php mysql 500错误日志_服务器出现500错误的时候,让PHP显示错误信息
  3. 综述 | 卷积神经网络:从基础技术到研究前景
  4. 计算机操作员五级知识点,计算机操作员五级.doc
  5. 解决h264bitstream的一个bug
  6. Pandas Series interpolate
  7. 乐pad平板电脑_2020年双十一高性价比平板电脑推荐(包含苹果ipad,安卓华为,微软surface)...
  8. android layout_gravity失效的问题
  9. ASP.NET应用开发心得
  10. 智能信贷产业进入爆发期,银行如何破解微贷难题?
  11. 【POJ 3041】Asteroids【网络流 —— 最小点覆盖】
  12. 有关Altera 的CPLD工程编译报错的解决方法
  13. video.js在react中实现视频播放(video.js)
  14. 轩辕剑【超越XISE菜刀的shell管理工具】
  15. tcp ip通讯协议测试软件6,实验6 TCPIP协议属性设置
  16. 日拱一卒,“功不唐捐
  17. vc 调用matlab figure 画图
  18. 插入式CAN总线隔离适配器LCAN-Opto在高空作业平台上隔离干扰、调理信号的应用案例介绍
  19. 全新安装Windows10系统(PE下)
  20. 起航---开发基于国产华为鸿蒙操作系统的APP

热门文章

  1. Python菜鸟起飞day11_ 线程、进程、协程(一、多线程)
  2. 【车载以太网】【AVB/TSN】概述
  3. JZOJ 5988 珂学计树题 (Burnside引理)
  4. 判断一棵树是否是二叉搜索树
  5. selenium爬取优酷页面并下载图片
  6. 2、刚接手一个新团队要做什么?
  7. git clone: SSL certificate problem: self signed certificate 报错解决
  8. 操作系统页面置换算法之先进先出(FIFO)页面置换算法(C语言实现)
  9. 神州租车将迎来新的发展机遇
  10. 台式计算机演变,电脑的发展史,体验不一样的电脑时代【图文】