请选择 进入手机版 | 继续访问电脑版

默认
发表评论 1
即时通讯技术MobileIMSDK:Java客户端开发指南
学习交流
  • 讨论学习和资料区:点此进入 推荐
  • 移动端即时通讯交流群: 215891622 推荐
  • bug/建议发送至:jb2011@163.com
  • 技术支持/合作/咨询请联系作者QQ:413980957

写在前面


MobileIMSDK的Java客户端Demo工程演示了一个精心编写的简易即时通讯客户端,相关代码和最佳实践可参考之,它位于SDK完整下载包的 src_all/client/java/MobileIMSDK4j/ 目录下,这是一个完整的Eclipse工程。您也可以下载编译好的Demo安装包先行体验:点此进入

第一部分:集成准备


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


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

找到lib包:
位于SDK完整下载包的 dist/client/java/ 目录下:
QQ20151113-0.png

第2步:引用lib包

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


Eclipse中如何引用第3方jar包?
跟所有Java工程一样引用jar包很简单,如果没试过,请查看:Eclipse中导入外部jar包Eclipse下导入外部jar包的3种方式
如果是其它Java IDE工具,请依此类推。

以MobileIMSDK的Demo工程为例,结果如下图:
未命名.png

第二部分:编写代码


第1步:基本配置

// 设置AppKey
ConfigEntity.appKey = "5418023dfd98c579b6001741";

// 设置服务器ip和服务器端口
ConfigEntity.serverIP = 您的IM服务器IP地址或域名;
ConfigEntity.serverUDPPort = 7901;

第2步:回调设置


① 框架基本事件回调实现类:
public class ChatBaseEventImpl implements ChatBaseEvent
{        
    // 登陆/掉线重连结果通知
    @Override
    public void onLoginMessage(int dwUserId, int dwErrorCode)
    {
        if (dwErrorCode == 0) 
            System.out.println("登录成功,当前分配的user_id="+dwUserId);
        else 
            System.out.println("登录失败,错误代码:" + dwErrorCode);
    }

    // 掉线事件通知
    @Override
    public void onLinkCloseMessage(int dwErrorCode)
    {
        System.out.println("网络连接出错关闭了,error:" + dwErrorCode);
    }
}

② 实时消息事件回调实现类:
public class ChatTransDataEventImpl implements ChatTransDataEvent
{
    // 收到即时通讯消息通知
    @Override
    public void onTransBuffer(String fingerPrintOfProtocal, int dwUserid, String dataContent)
    {
        System.out.println("收到来自用户"+dwUserid+"的消息:"+dataContent);
    }

    // 收到服务端反馈的错误信息通知
    @Override
    public void onErrorResponse(int errorCode, String errorMsg)
    {
        System.out.println("收到服务端错误消息,errorCode="+errorCode+", errorMsg="+errorMsg);
    }
}

③ QoS相关事件回调实现类:
public class MessageQoSEventImpl implements MessageQoSEvent
{
    // 消息无法完成实时送达的通知
    @Override
    public void messagesLost(ArrayList<Protocal> lostMessages)
    {
        System.out.println("收到系统的未实时送达事件通知,当前共有"
            +lostMessages.size()+"个包QoS保证机制结束,判定为【无法实时送达】!");
    }

    // 对方已成功收到消息的通知
    @Override
    public void messagesBeReceived(String theFingerPrint)
    {
        if(theFingerPrint != null)
            System.out.println("收到对方已收到消息事件的通知,消息指纹码="+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)
            System.out.println("数据发送成功!");
        else
            System.out.println("数据发送失败。错误码是:"+code+"!");
    }
}.execute();

第4步: 发送消息

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

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


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

当然,因为MobileIMSDK的Java客户端是运行于PC平台,因而是否省电的问题是无需考虑的。但为了配合Android、iOS客户端以及服务端,Java端也需要进行设置。


请调用以下API进行设置即可(框架默认工作在SenseMode.MODE_3S模式下):
// MobileIMSDK核心IM框架的敏感度模式设置
ConfigEntity.setSenseMode(SenseMode.MODE_10S);
MobileIMSDK预定义了多种模式,详细API说明:点此进入

特别说明:为了保证算法的一致性,以上设置需所有平台客户端和服务端都保持一致,否则将发生不可预测问题。

附录2:登陆请求结果为何是异步收到的?应用层如何处理体验更佳?

鉴于UDP通信的无连接特性,MobileIMSDK的服务端反馈回来的登陆结果自然也是异步到达,但这对开发者来说,只要代码处理得当,实现起来同样简单:即登陆请求发起前设置一个登陆结果观察者需可。


最佳实践详见Java客户端Demo代码 LoginGUI.doLoginImpl() 屏幕快照 2015-11-14 17.11.11.png

捐助作者,得MobileIMSDK精编注释版


请点击需要的平台和版本,前往淘宝下单,付款后系统会自动发货(网盘下载链接)到您的相关邮件地址,详情请见淘宝详情:

MobileIMSDK(Android客户端库)精编注释版:https://item.taobao.com/item.htm?id=534778878908
MobileIMSDK(Java客户端库)精编注释版:https://item.taobao.com/item.htm?id=534874027509
MobileIMSDK(iOS客户端库)精编注释版:https://item.taobao.com/item.htm?id=534918179776
MobileIMSDK(服务端库)精编注释版:https://item.taobao.com/item.htm?id=534986485062


1.png       2.png
3.png       4.png

(更多详情请进入:http://www.52im.net/thread-411-1-1.html

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:即时通讯技术MobileIMSDK:压力测试报告下一篇:即时通讯技术MobileIMSDK:常见问题解答

本帖已收录至以下技术专辑

评论 1
感谢楼主分享

Processed in 0.250000 second(s), 39 queries , Gzip On.

返回顶部