集成融云 即时通讯总结
应用加入及时通讯,自己写,需要需要很多资源,继承第三方是面前比较快捷的办法,第三方有融云,环信,网易云信
最近集成融云的sdk,
安装官方说明引入jar包
1.初始化SDK
RongIM.class 为融云消息启动类
RongCloudEvent.class为消息推送类
如果需要消息推送,这两个都要初始化:
在Application类中初始化
/*** 初始化融云sdk*/private void initRongyunSdk() {/*** 注意:** IMKit SDK调用第一步 初始化** context上下文** 只有两个进程需要初始化,主进程和 push 进程*/if (getApplicationInfo().packageName.equals(getCurProcessName(getApplicationContext())) ||"io.rong.push".equals(getCurProcessName(getApplicationContext()))) {RongIM.init(this);//主进程初始化/*** 融云SDK事件监听处理** 注册相关代码,只需要在主进程里做。*/if (getApplicationInfo().packageName.equals(getCurProcessName(getApplicationContext()))) {RongCloudEvent.init(this); //消息推送初始化DemoContext.init(this);Thread.setDefaultUncaughtExceptionHandler(new RongExceptionHandler(this));try {RongIM.registerMessageType(AgreedFriendRequestMessage.class);RongIM.registerMessageTemplate(new ContactNotificationMessageProvider());RongIM.registerMessageTemplate(new RealTimeLocationMessageProvider());//@ 消息模板展示RongContext.getInstance().registerConversationTemplate(new NewDiscussionConversationProvider());} catch (Exception e) {e.printStackTrace();}}}}
2.群聊:
启动群聊:
if ( RongIM.getInstance()!=null) {//发起聊天RongIM.getInstance().startGroupChat(context, groupId, "群聊天");// 单聊 RongIM.getInstance().startConversation(context, Conversation.ConversationType.PRIVATE, "9527", "聊天标题");// 群聊 RongIM.getInstance().startPrivateChat(context, useridd, "聊天标题");}else{ToastUtils.show(context,"rongim 为空");}
群聊天界面按说明文档,建立ConversationActivity并配置即可
群聊效果图:
3.消息列表:
可以动态集成也可以静态集成
静态集成
放到conversationlistactivity中静态集成 ,放到acticity中要在manifest文件中配置
设置为非聚合显示,否则要设置聚合显示的activity
public class ConversationListActivity extends FragmentActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.conversation_list);enterFragment();}/*** 加载 会话列表 ConversationListFragment*/private void enterFragment() {ConversationListFragment fragment = (ConversationListFragment) getSupportFragmentManager().findFragmentById(R.id.list_conversation);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.SYSTEM.getName(), "false")//设置系统会话非聚合显示.build();fragment.setUri(uri);}}
静态集成:
不需要在manifest中配置,参考会融云话列表及界面实现的视频讲解:
http://www.rongcloud.cn/docs/android_video_tutorials.html
动态获取会话列表fragment
/*** 会话列表的fragment*/private Fragment mConversationFragment = null;/*** 初始化会话列表* @return 会话列表*/private Fragment initConversationList(){if (mConversationFragment == null) {ConversationListFragment listFragment = ConversationListFragment.getInstance();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.APP_PUBLIC_SERVICE.getName(), "false")//订阅号.appendQueryParameter(Conversation.ConversationType.SYSTEM.getName(), "false")//系统.build();listFragment.setUri(uri);return listFragment;} else {return mConversationFragment;}}
消息列表效果图:
4.推送类:
程序中要加入融云的消息推送类:
public final class RongCloudEvent implements RongIMClient.OnReceiveMessageListener, RongIM.OnSendMessageListener,RongIM.UserInfoProvider, RongIM.GroupInfoProvider, RongIM.ConversationBehaviorListener,RongIMClient.ConnectionStatusListener, RongIM.LocationProvider, RongIMClient.OnReceivePushMessageListener, RongIM.ConversationListBehaviorListener,ApiCallback, Handler.Callback, RongIM.GroupUserInfoProvider {
//实现代码
}
推送效果图:
5.消息引导
消息显示:
在控制的类中实现setOnReceiveUnreadCountChangedListener监听:
/*** 融云消息接收,及初始化*/private void initRongMessage() {final Conversation.ConversationType[] conversationTypes = {Conversation.ConversationType.PRIVATE, Conversation.ConversationType.DISCUSSION,Conversation.ConversationType.GROUP, Conversation.ConversationType.SYSTEM,Conversation.ConversationType.PUBLIC_SERVICE, Conversation.ConversationType.APP_PUBLIC_SERVICE};Handler handler = new Handler();handler.postDelayed(new Runnable() {@Overridepublic void run() {RongIM.getInstance().setOnReceiveUnreadCountChangedListener(mCountListener, conversationTypes);
// RongIM.getInstance().setOnReceiveUnreadCountChangedListener(mCountListener1, Conversation.ConversationType.APP_PUBLIC_SERVICE);}}, 500);}
控制消息的显示,消息数据的变化和隐藏
public RongIM.OnReceiveUnreadCountChangedListener mCountListener = new RongIM.OnReceiveUnreadCountChangedListener() {@Overridepublic void onMessageIncreased(int count) {if (count == 0) {mUnreadNumView.setVisibility(View.GONE);} else if (count > 0 && count < 100) {mUnreadNumView.setVisibility(View.VISIBLE);mUnreadNumView.setText(count + "");} else {mUnreadNumView.setVisibility(View.VISIBLE);mUnreadNumView.setText(R.string.no_read_message);}}};
显示消息效果图:
没有消息:
收到一条消息:
消息数据变化:
6.成员信息:头像和昵称
/*** 用户信息的提供者:GetUserInfoProvider 的回调方法,获取用户信息。** @param userId 用户 Id。* @return 用户信息,(注:由开发者提供用户信息)。*/@Overridepublic UserInfo getUserInfo(String userId) {if (userId == null)return null;if (DemoContext.getInstance() == null)return null;UserInfos userInfo = DemoContext.getInstance().getUserInfosById(userId);if (userInfo == null) {getUserInfoByUserIdHttpRequest = DemoContext.getInstance().getDemoApi().getUserInfoByUserId(userId, (ApiCallback<User>) this);}final UserInfo userInfoById = DemoContext.getInstance().getUserInfoById(userId);return userInfoById;/* String url="http://img01.taopic.com/141012/235112-1410120K20374.jpg";
// final String uriString = "http://img1.2345.com/duoteimg/qqTxImg/2013/04/22/13667759472.jpg";String uri = "http://dev1.mobile.xiebao.me/attachment/download?username=888880&sid=0ah1i8he53pfe8fie5bh6f09h5&file_id=7845&assoc_type=agreelogo1&type=short";UserInfo user= new UserInfo(userId, "xiaowang", Uri.parse(uri));Log.v(tag,"设置用户头像,id = "+userId);return user;*/}
效果图:
![](/assets/blank.gif)
集成融云 即时通讯总结相关推荐
- 项目中集成融云即时通讯
http://blog.csdn.net/qq_28759359/article/details/52689948 项目中集成融云IM,能够单聊,离线能够收到消息,有聊天列表. 一我使用的是融云. I ...
- iOS集成融云即时通讯详细教程
相关集成方法也可以直接参考官方文档http://www.rongcloud.cn/docs/ios.html.下面是我集成过程中的一些详细步骤. 1.准备工作:到官网http://www.rongcl ...
- 融云即时通讯SDK集成 – 定制UI(二) ——添加自定义表情库
融云即时通讯SDK集成 – 定制UI(二) --添加自定义表情库 背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的 ...
- iOS开发融云即时通讯集成详细步骤
1.融云即时通讯iOS SDK下载地址 http://rongcloud.cn/downloads 选择iOS SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注 ...
- 融云即时通讯云平台获北京六局委新技术新产品认证
近日,融云即时通讯云平台成功入选第七批北京市新技术新产品(服务)认证,成为本批次中即时通讯行业唯一入选企业.该证书是由北京市科学技术委员会.北京市发展改革委员会.北京市经济和信息化委员会.北京市住房和 ...
- 记录一下融云即时通讯IM
通过apicloud开发app,集成融云的sdk开发IM聊天系统 1初始化融云,显示聊天列表 var rong var header_h = 50 var footer_h = 45 var toUs ...
- 融云即时通讯之直播聊天室
前言 做直播当然少不了聊天功能,融云直播聊天室支持消息类型包括文字.语音.图片.点赞.礼物.弹幕等,也支持通过自定义消息实现自已的业务逻辑:支持聊天室用户管理功能,包括创建.加入.销毁.禁言.查询.封 ...
- iOS:融云即时通讯快速集成
一.介绍 即时通讯在众多社交软件.生活软件以及教育软件中已经是必备的功能了,在当前国内,即时通讯SDK做的比较不错的有那么几家,例如环信SDK.融云SDK...,这两家做的都很不错,各有千秋吧,要是真 ...
- 融云即时通讯SDK集成 -- 定制UI(二) ——添加自定义表情库
背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的SDK厂商选来选去的, 各有各的好也各有各的不足.最后点兵点将,选 ...
- 融云聊天 php_thinkphp整合系列之融云即时通讯在线聊天
随着技术的发展:现代的网站:越来越趋于应用形式了: 不再是像以前那样需要用户刷新页面:获取数据了: 服务器端可以主动向用户推送数据:更加及时性了: 比较突出的就是即时通讯在线聊天: 今个:我们要打造的 ...
最新文章
- java的byte与C#的异同引起的字符处理问题。
- 院士论坛|李德仁:测绘遥感能为智能驾驶做什么? ——论测绘遥感与智能驾驶
- keras lastm循环神经网络训练验证测试
- iOS 最新发布App Store流程
- python黑色的_python – 将RGB转换为黑色或白色
- setTimeout setInterval
- Spark笔记:复杂RDD的API的理解(上)
- php eurl.axd,Http异常eurl.axd出错信息解决方法
- 原型制作是什么意思_制作电路原型的最佳方法是什么?
- 每个人都是生活的导演
- UVa 10394-Twin Primes
- python max((1、2、3)*2)_【Python】python基础2(2)
- ocr带单字坐标离线识别
- OCR算法识别性能评估
- 抖音、吃鸡、王者荣耀:你的自律,是如何被顶级产品经理一步一步毁掉的
- 介值定理究竟在讲什么?
- 《从零开始:机器学习的数学原理和算法实践》chap1
- ETCgame移动端上线,预测游戏世界杯预测触手可及
- 计算机专业的硕士犯罪,计算机犯罪研究
- 傅里叶变换中,圆频率w与频率f之间的公式转化
热门文章
- SecureCRT 设置会话永不过期
- SecureCRT8.3.3软件包百度网盘
- ubuntu16.04 设置开机自动运行程序
- Linux下 python调用讯飞离线语音合成(tts)
- ThinkPad E450 10.11 驱动HD4400的注意即解决方法
- 从0开始移植冒险岛online,和小伙伴一起在局域网或私服怀旧吧
- it论坛 计算机科学概论,(毕业论文) 计算机科学与技术专业 IT技术论坛.doc
- configure: error: Jabber library not found
- 因果法制体系轮回框架的崛起
- c语言string函数的用法_C语言让电脑关机?system函数功能够大够硬