iOS开发--XMPPFramework--好友模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发--XMPPFramework--好友模块相关的知识,希望对你有一定的参考价值。

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

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

首先,打开偏好设置,看一下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;

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

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

 

以上是关于iOS开发--XMPPFramework--好友模块的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS的XMPPFramework中实现发送好友请求的方式?

XMPPFramework - 如何获取在线和离线好友列表?

如何通过 XMPPFramework 添加好友

XMPPFramework - 如何接收名册的存在信息以及名册列表?

iOS开发之使用XMPPFramework实现即时通信

iOS上的XMPPFramework -xmppRoomDidDestroy:没有被调用