zoukankan      html  css  js  c++  java
  • iOS开发--XMPPFramework--好友模块(四)

    创了一个XMPP即时通讯交流群140147825,欢迎大家来交流~我们是一起写代码的弟兄~

    前面几篇,我们讨论了环境的配置,框架的导入和用户登陆,这一篇我们来说说好友模块。

    在进入正题之前,我们来说下调试。

    首先,打开偏好设置,看一下Openfire服务器和MySQL是否打开,记得先打开MySQL,再打开Openfire,随后,点击Open Admin ConConsole,

    出现下面的页面,就成功了。

    输入用户名和密码,登录,出现这个界面:

    随后,点击导航栏上的“用户/组”,出现了用户和聊天组的管理

    我们可以看到,用户中有两个,一个是管理员,一个是普通用户zhangsan,我们点击左侧菜单,新建一个用户wangwu,登录密码123456。

    在mac上,有个叫 信息 的应用,点开它。,并在菜单栏中选择添加账户

    选择其他“信息”账户,点击继续。

    点击登录,成功连上,我们可以回到Openfire控制台,发现张三已经登录。

    这样就成功了,我们可以用程序和张三聊天。。

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    接下来是今天的正题,好友模块。

    我们在上一篇设置模块的方法中,加入好友模块,并激活。

    // 好友模块
        self.xmppRoster = [[XMPPRoster alloc] initWithRosterStorage:[XMPPRosterCoreDataStorage sharedInstance]];
        // 不自动同意好友申请
        [self.xmppRoster setAutoAcceptKnownPresenceSubscriptionRequests:NO];
        [self.xmppRoster setAutoClearAllUsersAndResources:NO];
        //登录完成之后 不自动同步一次好友列表
        [self.xmppRoster setAutoFetchRoster:NO];
        
        // 好友聊天记录模块
        self.xmppMessageArchiving = [[XMPPMessageArchiving alloc] initWithMessageArchivingStorage:[XMPPMessageArchivingCoreDataStorage sharedInstance]];
        
        // 激活
        [self.xmppRoster activate:self.xmppStream];
        [self.xmppMessageArchiving activate:self.xmppStream];

    我们可以通过下面这个代理方法获得好友的上下线通知:

    - (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence {
        //这个if成立的时候说明对方想要订阅你
        if ([presence.type isEqualToString:@"subscribe"]) {
            [self.xmppRoster acceptPresenceSubscriptionRequestFrom:presence.from andAddToRoster:YES];
        }
    }

    收到一个presence消息,当然,我们这里没有对好友上线做操作,当前代码的意思是收到好友订阅请求,并且同意。

    - (void)addUser:(XMPPJID *)jid withNickname:(NSString *)optionalName;

    上面这段代码的作用就是发送添加好友的请求。然后,对方在上面的代理中收到订阅消息,选择同意或者弹出加好友的请求。

    下一篇,我们来说说好友列表模块。

    创了一个XMPP即时通讯交流群140147825,欢迎大家来交流~我们是一起写代码的弟兄~

  • 相关阅读:
    架构的上层是系统,是系统要素的组织形式
    计数与方法论、哲学
    网络编程--会话层、表示层、应用层
    面向中间件编程--草稿
    泛型:基于类型组合的算法和结构构建---数据结构与算法
    面向对象:消息机制更适合描述;
    类型的连接:实连接、虚连接
    数据库 = filesystem + transcation + dsl + dslengine
    一文看透浏览器架构
    代码的结合性:继承 扩展 组合 变换--swift暗含的四根主线
  • 原文地址:https://www.cnblogs.com/FrankieZ/p/5285744.html
Copyright © 2011-2022 走看看