应用加入及时通讯,自己写,需要需要很多资源,继承第三方是面前比较快捷的办法,第三方有融云,环信,网易云信

最近集成融云的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.成员信息:头像和昵称

在RongCloudEvent类中实现getUserInfo in interface UserInfoProvider方法,具体看官方视频
    /*** 用户信息的提供者: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;*/}

效果图:

集成融云 即时通讯总结相关推荐

  1. 项目中集成融云即时通讯

    http://blog.csdn.net/qq_28759359/article/details/52689948 项目中集成融云IM,能够单聊,离线能够收到消息,有聊天列表. 一我使用的是融云. I ...

  2. iOS集成融云即时通讯详细教程

    相关集成方法也可以直接参考官方文档http://www.rongcloud.cn/docs/ios.html.下面是我集成过程中的一些详细步骤. 1.准备工作:到官网http://www.rongcl ...

  3. 融云即时通讯SDK集成 – 定制UI(二) ——添加自定义表情库

    融云即时通讯SDK集成 – 定制UI(二) --添加自定义表情库 背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的 ...

  4. iOS开发融云即时通讯集成详细步骤

    1.融云即时通讯iOS SDK下载地址   http://rongcloud.cn/downloads  选择iOS   SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注 ...

  5. 融云即时通讯云平台获北京六局委新技术新产品认证

    近日,融云即时通讯云平台成功入选第七批北京市新技术新产品(服务)认证,成为本批次中即时通讯行业唯一入选企业.该证书是由北京市科学技术委员会.北京市发展改革委员会.北京市经济和信息化委员会.北京市住房和 ...

  6. 记录一下融云即时通讯IM

    通过apicloud开发app,集成融云的sdk开发IM聊天系统 1初始化融云,显示聊天列表 var rong var header_h = 50 var footer_h = 45 var toUs ...

  7. 融云即时通讯之直播聊天室

    前言 做直播当然少不了聊天功能,融云直播聊天室支持消息类型包括文字.语音.图片.点赞.礼物.弹幕等,也支持通过自定义消息实现自已的业务逻辑:支持聊天室用户管理功能,包括创建.加入.销毁.禁言.查询.封 ...

  8. iOS:融云即时通讯快速集成

    一.介绍 即时通讯在众多社交软件.生活软件以及教育软件中已经是必备的功能了,在当前国内,即时通讯SDK做的比较不错的有那么几家,例如环信SDK.融云SDK...,这两家做的都很不错,各有千秋吧,要是真 ...

  9. 融云即时通讯SDK集成 -- 定制UI(二) ——添加自定义表情库

    背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的SDK厂商选来选去的, 各有各的好也各有各的不足.最后点兵点将,选 ...

  10. 融云聊天 php_thinkphp整合系列之融云即时通讯在线聊天

    随着技术的发展:现代的网站:越来越趋于应用形式了: 不再是像以前那样需要用户刷新页面:获取数据了: 服务器端可以主动向用户推送数据:更加及时性了: 比较突出的就是即时通讯在线聊天: 今个:我们要打造的 ...

最新文章

  1. java的byte与C#的异同引起的字符处理问题。
  2. 院士论坛|李德仁:测绘遥感能为智能驾驶做什么? ——论测绘遥感与智能驾驶
  3. keras lastm循环神经网络训练验证测试
  4. iOS 最新发布App Store流程
  5. python黑色的_python – 将RGB转换为黑色或白色
  6. setTimeout setInterval
  7. Spark笔记:复杂RDD的API的理解(上)
  8. php eurl.axd,Http异常eurl.axd出错信息解决方法
  9. 原型制作是什么意思_制作电路原型的最佳方法是什么?
  10. 每个人都是生活的导演
  11. UVa 10394-Twin Primes
  12. python max((1、2、3)*2)_【Python】python基础2(2)
  13. ocr带单字坐标离线识别
  14. OCR算法识别性能评估
  15. 抖音、吃鸡、王者荣耀:你的自律,是如何被顶级产品经理一步一步毁掉的
  16. 介值定理究竟在讲什么?
  17. 《从零开始:机器学习的数学原理和算法实践》chap1
  18. ETCgame移动端上线,预测游戏世界杯预测触手可及
  19. 计算机专业的硕士犯罪,计算机犯罪研究
  20. 傅里叶变换中,圆频率w与频率f之间的公式转化

热门文章

  1. SecureCRT 设置会话永不过期
  2. SecureCRT8.3.3软件包百度网盘
  3. ubuntu16.04 设置开机自动运行程序
  4. Linux下 python调用讯飞离线语音合成(tts)
  5. ThinkPad E450 10.11 驱动HD4400的注意即解决方法
  6. 从0开始移植冒险岛online,和小伙伴一起在局域网或私服怀旧吧
  7. it论坛 计算机科学概论,(毕业论文) 计算机科学与技术专业 IT技术论坛.doc
  8. configure: error: Jabber library not found
  9. 因果法制体系轮回框架的崛起
  10. c语言string函数的用法_C语言让电脑关机?system函数功能够大够硬