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;

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

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

时间: 2024-11-10 08:15:56

iOS开发--XMPPFramework--好友模块(四)的相关文章

ios开发入门篇(四):UIWebView结合UISearchBar的简单用法

 UIWebView是ios开发中比较常用的一个控件.我们可以用它来浏览网页.打开文档等,今天笔者在这里简单介绍下UIWebView和UISearchBar结合起来的用法,做一个简单的类浏览器. 一:首先定义这两个控件,并在.h文件中实现UISearchBarDelegate,UIWebViewDelegate两个代理 @interface TestView : UIViewController<UISearchBarDelegate,UIWebViewDelegate> @property(

iOS开发之窥探UICollectionViewController(四) --一款功能强大的自定义瀑布流

在上一篇博客中<iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流>,自定义瀑布流的列数,Cell的外边距,Cell的最大以及最小高度是在我们的布局文件中是写死的,换句话说也就是不可配置的.为了循序渐进,由浅入深呢,上篇博客暂且那么写.不过那样写太过死板,本来使用起来比较灵活的自定义布局,如果把其配置参数给写死了,就相当于在笼中的猛兽,再厉害不也白扯蛮. 在今天这篇博客中我们要接着上篇博客中的Demo,使其自定义布局

iOS开发之聊天模块--内容保存逻辑实现

需求详解: 在实际开发中,有可能是在后期优化的时候,会有这么需要优化的需求:聊天输入框保存之前输入的文本,提高用户的良好体验. 在聊天模块中,用户可能会在输入框输入若干字符,但是没有点击发送就点击退出聊天,或者要点击用户头像确认用户的信息,或者比如需要向好友发送另一个好 友的ID不得不暂时退出当前好友聊天界面跳转找到别的界面找ID,然而当前聊天输入框也已经输入好了若干字符,用户当然不希望退出之后就删除之前输入好的 文字.所以这里就需要暂时保存用户输入好的但是没有发送出去的字符串. 但是,还需要满

一个java程序员自学IOS开发之路(四)

根据上图,由于我是一个Java程序员,前面两个阶段还是学的比较快的,但是由于电脑配置不行,光是开启虚拟机登陆OS系统就卡的不要不要的了,在那里面写代码简直是煎熬= =,后面的UI学习又要启动ios模拟器,根本无法进行. 于是下定决心,入手一台Macbook pro,告别我用了四年的联想~今天本本到货啦,哈哈^_^,可以愉快的继续了 2015/10/14 Day 15 为了便于开发者打造各式各样的优秀app,UIKit框架提供了非常多功能强大又易用的UI控件 2015/10/16 Day 16 第

IOS开发之功能模块--给任意的UIView添加点击事件

前言:好久没写博客,今天来一波.我在实际项目开发中,会遇到这样功能需求:我已经搭好了iOS的UI界面,但是很多界面的子View用了UIView,然后这些UIView中用了UILabel和UIImageView,然后接着需求要这些View能够有点击事件,比如一点击就跳转到某个控制器.一开始懵逼了,难道我还要把他们全部改成UIButton,但是UIButton不好添加子View,难道我还要全部自定义一下UIButton,就算自定义好了,在项目已经打好的界面还是要一个个替换,多麻烦.所以就想到通过UI

iOS开发之功能模块--Apns推送中的的json格式介绍

在开发向苹果Apns推送消息服务功能,我们需要根据Apns接受的数据格式进行推送.下面接受我在进行apns推送时候总结的一点apns服务接受的Json数据格式 示例 1: 以下负载包含哦一个简单的 aps 字典.它使用字符串而不是字典作为 alert 的值,该负载同样包含了一个自定义的属性数组. { "aps" : { "alert" : "message" },//alert表示推送的消息文本 "parm" : [ &quo

【iOS开发-99】POST四种数据提交方式以及NSURLSession上传任务的一些知识

(1)POST四种数据提交方式 --Content-Type:application/x-www-form-urlencoded,提交的数据格式就是key1=value1&key2=value2的方式. NSURL *url=nil; NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:2.0f]; NSString *str=[NSString st

iOS开发ReactiveCocoa学习笔记(四)

ReactiveCocoa常见操作方法介绍: demo地址:https://github.com/SummerHH/ReactiveCocoa.git p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400; min-height: 13.0px }

iOS开发之功能模块--高仿Boss直聘的IM界面交互功能

本人公司项目属于社交类,高仿Boss直聘早期的版本,现在Boss直聘界面风格,交互风格都不如Boss直聘以前版本的好看. 本人通过iPhone模拟器和本人真机对聊,将完成的交互功能通过Mac截屏模拟器来录制基本的交互功能. 界面因为动态截图工具本身不完美,截屏失真,所以存在有的部分UI颜色稍微变化了,比如白色稍微变灰暗色,不是项目本身的问题. 因为是本公司项目,不提供源码,只提供交互动态图仅供观赏??. (备注:Boss直聘分为个人端和企业端) 1.基本功能描述: 在个人端,一开始会话列表没有任