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

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

  1. iOS开发Swift篇—(四)运算符

    iOS开发Swift篇—(四)运算符 一.运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=.-= 算术运算符:+.-.*./ 求余运算符:% 自增.自减运算符: ...

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

    在上一篇博客中<iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流>,自定义瀑布流的列数,Cell的外边距,C ...

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

     UIWebView是ios开发中比较常用的一个控件.我们可以用它来浏览网页.打开文档等,今天笔者在这里简单介绍下UIWebView和UISearchBar结合起来的用法,做一个简单的类浏览器. 一: ...

  4. IOS开发之功能模块--自定义导航控制器类常用自定义的代码

    前言:本文篇幅不多,但是涉及到的内容却是开发中常用的. 涉及的内容: 1.统一设置导航控制器子控制器的返回按钮. 2.因为修改了系统的返回按钮,所以还需要设置手势事件. 3.隐藏底部的工具条. 这里直 ...

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

    需求详解: 在实际开发中,有可能是在后期优化的时候,会有这么需要优化的需求:聊天输入框保存之前输入的文本,提高用户的良好体验. 在聊天模块中,用户可能会在输入框输入若干字符,但是没有点击发送就点击退出 ...

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

    在开发向苹果Apns推送消息服务功能,我们需要根据Apns接受的数据格式进行推送.下面接受我在进行apns推送时候总结的一点apns服务接受的Json数据格式 示例 1: 以下负载包含哦一个简单的 a ...

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

    前言:好久没写博客,今天来一波.我在实际项目开发中,会遇到这样功能需求:我已经搭好了iOS的UI界面,但是很多界面的子View用了UIView,然后这些UIView中用了UILabel和UIImage ...

  8. iOS开发之功能模块--高仿Boss直聘的常用语的开发

    首先上Boss直聘的功能界面截图,至于交互请读者现在Boss直聘去交互体验:     本人的公司项目要高仿Boss直聘的IM常用语的交互功能,居然花费了我前后17个小时完成,这回自己测试了很多遍,代码 ...

  9. iOS开发之功能模块--根据需求开发横向的子弹盒View

    这个需求是本人工作开发中后期需求要添加的新功能,本人模仿UITableView的代理和数据源方法进行了第一阶段的开发.第二阶段是添加丰富的动画. 这个功能需求描述:能上传添加五个待选头像,五个头像分别 ...

随机推荐

  1. Python构建发布

    click python配置apache的web服务器方法(python的CGI配置) python中的编码问题 http://blog.csdn.net/wyb_hardworking/articl ...

  2. FlashSocke 通过flash进行socket通信(as代码)

    在早期的项目中, 因为需要用IE上连接socket进行通信, 所以不得不借助于flash的socket功能,于是有了下面这个`FlashSocke`,供JavaScript调用 和 回调JavaScr ...

  3. Linux系统软件安装的几种方式

    Linux系统,一个文件能不能执行看的是有没有可执行权限x,不过真正的可执行文件是二进制文件(binary file),举例来说Linux上的c语言源码编写完后,通过gcc程序编译后就可以创建一个可执 ...

  4. CSS布局(五) 网页布局方式

    网页实质是块与块之间的位置,块挨着块,块嵌套块,块叠着块. 三种关系:相邻,嵌套,重叠. 下面介绍网页布局的常用几种方式 1.一列布局: 一般都是固定的宽高,设置margin : 0 auto来水平居 ...

  5. php的ob函数实现页面静态化

    首先介绍一下php中ob缓存常用到的几个常用函数ob_start():开启缓存机制ob_get_contents():获取ob缓存中的内容ob_clean()清除ob缓存中的内容,但不关闭缓存ob_e ...

  6. Jupyter 初体验

    简介 Jupyter notebook 是一个非常强大的工具,可以创建漂亮的交互式文档. 安装 安装环境:win7专业版32位系统 + python 3.6.4 安装命令:pip install ju ...

  7. POJ1639 - Picnic Planning

    原题链接 Description 给出一张个点的无向边权图并钦定点,求使得点的度不超过的最小生成树. Solution 首先无视掉与相连的所有边,原图会变成若干互不连通的个块.对每个块分别求MST,再 ...

  8. 接口测试执行工具Postman:模拟请求、用例执行、断言、批量运行用例、简单持续集成

    一.接口测试-postman-模拟HTTP Requests 二.接口测试-postman-权限Authorization 三.接口测试-postman-断言Writting Test 四.接口测试- ...

  9. clearstatcache

    clearstatcache clearstatcache — 清除文件状态缓存 void clearstatcache ([ bool $clear_realpath_cache = false [ ...

  10. linux dns搭建

    DNS:域名解析(Domain Nmae System)正向解析:根据主机名称(域名)查找其对应的ip地址,这是最基本,最常用的功能反向解析:根据ip地址查找其对应的主机名称(域名),反垃圾邮件/安全 ...