Smack开发总结 (二)登录注册 与 好友管理

《Smack开发总结 (二)登录注册 与 好友管理》
转载请注明来自 傻小孩b_移动开发http://www.jianshu.com/users/d388bcf9c4d3)喜欢的可以关注我,不定期总结文章!您的支持是我的动力哈!

对于即时通讯,当然少不了好友管理模块了。openfire也是没有例外,底层有对好友进行基本的操作分装(添加好友、删除好友、好友分组等功能),上一篇总结了smack中的管理连接,这一篇总结下登录注册与好友管理

登录注册与好友管理

一、登录注册

对于4.1.8版本的smack,登录注册集成封装在XMPPTCPConnection API中,例如以下代码:

    // 登录关键代码
     try {
            this.mConnection.login(account,password);
        } catch (Exception e) {
            getmLetterListener().sendHandlerLetter(SnakeServiceManager.HANDLER_CODE_LOGIN_FAILED,e);
        }

    // 注册关键代码

        Map<String, String> map = new HashMap<>();
        map.put("account",account);
        map.put("password",password);
        map.put("android","");

        Registration mRegistration = new Registration(map);
        mRegistration.setType(IQ.Type.set);
        mRegistration.setTo(this.mConnection.getServiceName());

        try {
            this.mConnection.sendStanza(mRegistration);

            StanzaFilter filter = new AndFilter(new StanzaIdFilter(mRegistration.getStanzaId()), new StanzaTypeFilter(IQ.class));
            PacketCollector collector = mConnection.createPacketCollector(filter);

            IQ result = (IQ) collector.nextResult(mConnection.getPacketReplyTimeout());
            collector.cancel();
            if (result == null || result.getType() == IQ.Type.error) {
                // register error
            } else {
                // register suceess!
            }

        } catch (SmackException.NotConnectedException e) {
            e.printStackTrace();
        }

二、好友管理

(1) 好友管理类 Roster 实例化

对于4.1.8版本的smack,首先好友管理由 org.jivesoftware.smack.roster.Roster类进行模块管理,本质上是用单例模式进行实例化,我们可以通过以下代码进行实例化:

        Roster  mRoster = Roster.getInstanceFor(this.mConnection);

        mRoster.setSubscriptionMode(Roster.SubscriptionMode.manual);// 设置对方添加自己好友,需要询问

(2) 好友状态监听

进行好友状态监听,一般可以用来监听好友状态(是否在线)、好友添加、查询好友结果等作用。只需要将实例化的Roster进行监听即可

        mRoster.getEntriesAndAddListener(#RosterListener, #RosterEntries);

** RosterListener ** 顾名思义,这个监听主要针对好友状态监听,例如以下分析:


    /**
     * 添加好友的时候,状态变化回回调,返回添加好友的XMPP地址集合
     */
    public void entriesAdded(Collection<String> addresses);

    /**
     * 添加好友的时候,状态变化回回调,返回添加好友的XMPP地址集合
     */
    public void entriesUpdated(Collection<String> addresses);

    /**
     * 好友信息更新的时候回调,返回添加好友的XMPP地址集合。一般可以利用更新本地数据库
     */
    public void entriesDeleted(Collection<String> addresses);

    /**
     * 删除好友的时候,状态变化回调,返回添加好友的XMPP地址集合
     */
    public void presenceChanged(Presence presence);

** RosterEntries** 顾名思义,这个监听主要针对获取好友回调监听,例如以下分析:

        /*
         * 一般会利用在查询当前用户好友的时候,回调具体的RosterEntry,然后进行本地数据库数据持久化
         */
 public void rosterEntires(Collection<RosterEntry> rosterEntries);

默认情况下,对于好友管理的回调监听这两个即可,如果自身在应用程序程序开发的时候。也许还是需要外部的回调接口作为连接其他controller的通信。这个得具体根据业务、在适当的、合理的数据通信。明天继续补充,好友管理的一些基本操作。

傻小孩b mark共勉,写给在成长路上奋斗的你

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,280评论 19 139
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,779评论 0 15
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,223评论 25 709
  • 一、Smack库概述     Smack是一个开源、易用的XMPP/Jabber客户端库,它使用Java语言开发,...
    AndryYu阅读 11,491评论 2 13
  • 即时通讯系列阅读 即时通讯基础 即时通讯:XMPP基础 即时通讯:XMPP项目实践-微聊 Smack类库最好的学习...
    JackChen1024阅读 6,020评论 2 9

友情链接更多精彩内容