首页 > 技术文章 > iOS开发--XMPPFramework--好友模块(四)

FrankieZ 2016-03-16 23:39 原文

创了一个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,欢迎大家来交流~我们是一起写代码的弟兄~

推荐阅读