申明:MobileIMSDK 目前为个人维护的原创开源工程,现陆续整理了一些资料,希望对需要的人有用。如需与作者交流,见文章底签名处,互相学习。


MobileIMSDK开源工程的代码托管地址请进入 Git@OSC:点击进入

MobileIMSDK的Android客户端SDK文档:点击进入

学习交流

  • 讨论学习和资料区:点此进入 推荐
  • 移动端即时通讯交流: 215891622 推荐
  • bug/建议发送至:jb2011@163.com

【写在前面】

MobileIMSDK的Android客户端Demo工程演示了一个精心编写的简易即时通讯客户端,相关代码和最佳实践可参考之,它位于SDK完整下载包的 src_all/client/android/MobileIMSDK4a/ 目录下,这是一个完整的Eclipse+ADT工程。

您也可以下载编译好的Demo安装包先行体验:点此进入

【第一部分】:集成准备

> 第1步:下载SDK并找到lib包

① 马上下载:
最新版打包下载 点此进入,或者前往 MobileIMSDK的Github 自行同步代码。

② 找到lib包:
位于SDK完整下载包的 dist/client/android/ 目录下:

> 第2步:引用lib包

提示:MobileIMSDK的Android客户端lib包支持Android 2.3(含)及以上版本。

① Eclipse中如何引用第3方jar包?
直接将lib包复制到Eclipse的Android工程的 libs/ 目录下,F5刷新后即可。
如果是其它Android IDE工具,请依此类推。

② 以MobileIMSDK的Demo工程为例,结果如下图:

【第二部分】:编写代码

> 第1步:基本配置

 // 设置AppKey
2 ConfigEntity.appKey = "5418023dfd98c579b6001741";
3
4 // 设置服务器ip和服务器端口
5 ConfigEntity.serverIP = "rbcore.openmob.net";
6 ConfigEntity.serverUDPPort = 7901;
7
8 // 请确保首先进行核心库的初始化(这不同于iOS和Java端)
9 ClientCoreSDK.getInstance().init(this.context);

> 第2步:回调设置

① 框架基本事件回调实现类:

 public class ChatBaseEventImpl implements ChatBaseEvent
{
// 登陆/掉线重连结果通知
@Override
public void onLoginMessage(int dwUserId, int dwErrorCode)
{
if (dwErrorCode == 0)
Log.i(TAG, "登录成功,当前分配的user_id="+dwUserId);
else
Log.i(TAG, "登录失败,错误代码:" + dwErrorCode);
} // 掉线事件通知
@Override
public void onLinkCloseMessage(int dwErrorCode)
{
Log.i(TAG, "网络连接出错关闭了,error:" + dwErrorCode);
}
}

② 实时消息事件回调实现类:

 public class ChatTransDataEventImpl implements ChatTransDataEvent
{
// 收到即时通讯消息通知
@Override
public void onTransBuffer(String fingerPrintOfProtocal, int dwUserid, String dataContent)
{
Log.i(TAG, "收到来自用户"+dwUserid+"的消息:"+dataContent);
} // 收到服务端反馈的错误信息通知
@Override
public void onErrorResponse(int errorCode, String errorMsg)
{
Log.i(TAG, "收到服务端错误消息,errorCode="+errorCode+", errorMsg="+errorMsg);
}
}

③ QoS相关事件回调实现类:

 public class MessageQoSEventImpl implements MessageQoSEvent
{
// 消息无法完成实时送达的通知
@Override
public void messagesLost(ArrayList<Protocal> lostMessages)
{
Log.i(TAG, "收到系统的未实时送达事件通知,当前共有"
+lostMessages.size()+"个包QoS保证机制结束,判定为【无法实时送达】!");
} // 对方已成功收到消息的通知
@Override
public void messagesBeReceived(String theFingerPrint)
{
if(theFingerPrint != null)
Log.i(TAG, "收到对方已收到消息事件的通知,消息指纹码="+theFingerPrint);
}
}

* 设置好事件回调通知监听:

 ClientCoreSDK.getInstance().setChatBaseEvent(new ChatBaseEventImpl());
ClientCoreSDK.getInstance().setChatTransDataEvent(new ChatTransDataEventImpl());
ClientCoreSDK.getInstance().setMessageQoSEvent(new MessageQoSEventImpl());

> 第3步:登陆请求

 new LocalUDPDataSender.SendLoginDataAsync(用户名, 密码){
@Override
protected void fireAfterSendLogin(int code)
{
if(code == 0)
Log.i(TAG, "数据发送成功!");
else
Log.i(TAG, "数据发送失败。错误码是:"+code+"!");
}
}.execute();

> 第4步: 发送消息

 new LocalUDPDataSender.SendCommonDataAsync("这是一条测试信息...", 对方的userId, true){
@Override
protected void onPostExecute(Integer code)
{
if(code == 0)
Log.i(TAG, "数据已成功发出!");
else
Log.i(TAG, "数据发送失败。错误码是:"+code+"!");
}
}.execute();

【第三部分】:常见开发问题附录

附录1:可以让客户端更省电吗?

请调用以下API进行设置即可(框架默认工作在SenseMode.MODE_3S模式下):

 // MobileIMSDK核心IM框架的敏感度模式设置
ConfigEntity.setSenseMode(SenseMode.MODE_10S);

MobileIMSDK预定义了多种模式,详细API说明:点此进入
特别说明:为了保证算法的一致性,以上设置需所有平台客户端和服务端都保持一致,否则将发生不可预测问题。

【原创】轻量级即时通讯技术MobileIMSDK:Android客户端开发指南的更多相关文章

  1. 开源轻量级即时通讯技术 MobileIMSDK 的常见问题解答

    本帖最后由 茜茜asa 于 2015-12-14 17:50 编辑 申明:MobileIMSDK 目前为个人原创开源工程且已发布,现整理了一些有关MobileIMSDK的常见的问题,希望对需要的人有用 ...

  2. 【原创】轻量级移动端即时通讯技术 MobileIMSDK 发布了

    申明:MobileIMSDK目前为个人原创开源工程,投入了大量的时间和精力,希望对需要的人有所帮助.如需与作者交流,见文章底部个人签名处,互相学习.Q群:215891622,欢迎共同志趣者学习和交流. ...

  3. 【原创】轻量级移动设备即时通讯技术MobileIMSDK的常见问题解答

    申明:MobileIMSDK 目前为个人原创开源工程且已发布,现整理了一些有关MobileIMSDK的常见的问题,希望对需要的人有用,谢谢.如需与作者交流,见文章底部个人签名处,互相学习. Mobil ...

  4. Web端即时通讯技术原理详解

    前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...

  5. Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE

    1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Serve ...

  6. 新手入门:史上最全Web端即时通讯技术原理详解

    前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...

  7. Android SDK 开发指南

    Android SDK 开发指南 视频详解 以下视频是对融云 Android SDK 开发使用的详细讲解,您可以在阅读文档时配合学习.   更多视频教程如下: CSDN 融云 Android SDK ...

  8. WebRtc(网页即时通讯技术)知识点总结

    前言 WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,简而言之它是一个支持网页浏览器进行实时语音对话或视频对话的技术.并且还支持跨平台:window ...

  9. 新手入门贴:史上最全Web端即时通讯技术原理详解

    关于IM(InstantMessaging)即时通信类软件(如微信,QQ),大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM或桌面IM软件类的通信原理介绍也较多,此处不再赘述.而 ...

随机推荐

  1. JAVA 笔试笔记

    1.java优缺点 优点 :纯面对对象,跨平台,提供很多内置的类库,支持web开发,有较好的健壮性和安全性缺点 : 速度慢,跨平台不能像其他的语言一样接近操作系统,复杂 2.java与c/c++ 都是 ...

  2. gdb调试工具vi编译器命令参考网址

    vi编译器命令:参考http://www.cnblogs.com/junw_china/articles/1708967.html gbd调试命令:参考http://blog.chinaunix.ne ...

  3. mono 3.10.0 正式发布:性能进一步改进

    Mono是Xamarin资助的一个项目,是微软的.NET框架的开源实现.它使得使用C#.F#和其他.NET语言进行跨平台开发成为可能.Xamarin在Mono之上构建了跨平台开发工具以及像Xamari ...

  4. 在Linux上编译dotnet cli的源代码生成.NET Core SDK的安装包

    .NET 的开源,有了更多的DIY乐趣.这篇博文记录一下在新安装的 Linux Ubuntu 14.04 上通过自己动手编译 dotnet cli 的源代码生成 .net core sdk 的 deb ...

  5. 玩转JavaScript OOP[1]——复杂类型

    概述 在JavaScript中,我们可以使用函数.数组.对象,以及日期.正则等一些内置类型的实例,它们都是复杂类型的表现.从本质上讲,这些复杂类型都是Object类型.本篇将主要介绍三种Object类 ...

  6. 使用VS+VisualGDB编译调试Linux程序

    Linux程序开发变得越来越多,越来越多的程序.产品需要跨平台,甚至有些开源项目只支持Linux平台,所以掌握Linux开发变得越来越重要. 但是对于习惯了Windows下的开发,使用了VS这个宇宙第 ...

  7. avascript中的this与函数讲解

    徐某某 一个半路出家的野生程序员 javascript中的this与函数讲解 前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大 ...

  8. Linux压缩命令

    Linux常见的压缩格式有.zip..gz..bz2..tar..tar.gz..tar.bz2:常用的压缩命令有zip.tar.这里列举了各压缩命令的使用示例.更多的用法请使用命令 --help查阅 ...

  9. SVN+码云 简单使用流程

    1.登录码云网站...

  10. Android开发学习之路-带文字的图片分享

    有用过微信分享SDK的都应该知道,微信分享到朋友圈的时候是不能同时分享图片和文字的,只要有缩略图,那么文字就不会生效.那么问题就来了,如果我们想把APP内的某些内容连带图片一起分享到微信,是不是没办法 ...