在现阶段的通信服务中。各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互通。

有了这个协议之后,使用不论什么一个组织或者个人提供的即使通信服务,都可以无障碍的与其它的及时通信服务的用户进行交流。

比如google
公司2005年推出的Google talk就是一款基于XMPP协议的即时通信软件。以下我们就谈论一下怎样简单的使用XMPP的好友加入

1、在XMPPFramework.h中将须要用到的头文件打开

2、在storyboard创建好友列表界面和添加好友界面

创建和添加的时候应该注意两者之间的连线:

3、定义查询结果存储器而且进行初始化

NSFetchedResultsController * fetch;

    AppDelegate * delegate=[UIApplication sharedApplication].delegate;

    //获取上下文
NSManagedObjectContext * context=[delegate.rosterStorage mainThreadManagedObjectContext]; //获取请求NSFetchRequest
NSFetchRequest * request=[NSFetchRequest fetchRequestWithEntityName:@"XMPPUserCoreDataStorageObject"]; //添加排序字段
NSSortDescriptor * des=[NSSortDescriptor sortDescriptorWithKey:@"sectionNum" ascending:YES];
[request setSortDescriptors:@[des]]; //对fetch进行初始化
fetch=[[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:@"sectionNum" cacheName:nil]; //设置代理
[fetch setDelegate:self]; //開始查询
[fetch performFetch:nil];

4、创实现tableView的代理方法

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return fetch.sections.count;
} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { id<NSFetchedResultsSectionInfo> sections=fetch.sections[section];
return [sections numberOfObjects] ;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"tabble" ]; XMPPUserCoreDataStorageObject * user=[fetch objectAtIndexPath:indexPath];
cell.textLabel.text=user.displayName; return cell;
} //返回分组数据信息。依据字段type来控制当前的状态
-(NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ id<NSFetchedResultsSectionInfo> info= [[fetch sections] objectAtIndex:section]; NSString * type=nil; if ([info.name isEqualToString:@"0"]) {
type=@"在线";
}else {
type=@"离线";
} return type; }

5、删除好友

-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{

    return YES;
} //通过花名冊对象对当前的好友进行删除操作
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ if (editingStyle==UITableViewCellEditingStyleDelete) {
AppDelegate * delegate=[UIApplication sharedApplication] .delegate; XMPPUserCoreDataStorageObject * user=[fetch objectAtIndexPath:indexPath]; [delegate.roster removeUser:user.jid]; }
}

6、添加好友

- (IBAction)add {
//获取好友名称
NSString * name=self.friends.text;
//获取好友名称
AppDelegate * delegate=[UIApplication sharedApplication].delegate;
XMPPJID * jid=[XMPPJID jidWithString:name];
if ([delegate.rosterStorage userExistsWithJID:jid xmppStream:delegate.stream]) {
NSLog(@"好友已经存在了");
}else{
//添加好友
[delegate.roster subscribePresenceToUser:jid]; }
}

  想要了解很多其它内容的小伙伴。能够点击查看源代码。亲自执行測试。

  疑问咨询或技术交流,请增加官方QQ群: (452379712)

作者:杰瑞教育

出处:http://blog.csdn.net/jerehedu/ 

本文版权归烟台杰瑞教育科技有限公司和CSDN共同拥有,欢迎转载,但未经作者允许必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

XMPP添加删除好友的更多相关文章

  1. xmpp获取好友信息和添加删除好友(4)

    原始地址: XMPPFrameWork IOS 开发(五)获取好友信息和添加删除好友 好友列表和好友名片 [_xmppRoster fetchRoster];//获取好友列表 //获取到一个好友节点 ...

  2. XMPP增加删除好友

    在现阶段的通信服务中,各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互 ...

  3. 即时聊天IM之一 XMPP协议简述

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com  综述: ...

  4. XMPP框架下微信项目总结(1)环境配置

    xmpp介绍 xmpp基于模块开发的 无须自己写请求 (登陆,注册,获取好友列表,添加/删除好友等) ------>简介 ------------------------- ----->工 ...

  5. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:0.概述

    欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 序言 帖主和队友仿制了一个简单版的微信,其中,队友是用Unity3D做前段,帖主用Java的Mina.Hiberna ...

  6. 【iOS XMPP】使用XMPPFramewok(一):添加XMPPFramework(XCode 4.6.2)

    转自:http://www.cnblogs.com/dyingbleed/archive/2013/05/09/3069145.html XMPPFramework GitHub: https://g ...

  7. XMPP之ios即时通讯客户端开发-创建工程添加XMPPFramework及其他框架(三)

    XMPPFramework GitHub: https://github.com/robbiehanson/XMPPFramework 获取源代码 git clone https://github.c ...

  8. XMPP即时通讯协议使用(四)——Openfire服务器源码编译与添加消息记录保存

    下载Openfire源码 下载地址:https://www.igniterealtime.org/downloads/index.jsp,当前最新版本为:4.2.3 Eclipse上部署Openfir ...

  9. xmpp整理笔记:用户网络连接及好友的管理

    xmpp中的用户连接模块包括用户的上线与下线信息展现,用户登录,用户的注册: 好友模块包括好友的添加,好友的删除,好友列表的展示. 在xmpp中 负责数据传输的类是xmppStream,开发的过程中, ...

随机推荐

  1. Mysql学习总结(34)——Mysql 彻底解决中文乱码的问题

    mysql 中常常出现对中文支持不友好的情况 常见的错误 "Illegal mix of collations for operation" 下面我们规整一下 mysql 数据库中 ...

  2. Jquery学习总结(2)——jQuery Ajax用法详解

    [详解]jquery ajax在web应用开发中常用,主要包括有ajax,get,post,load,getscript等这几种常用无刷新操作方法,下面来给大家介绍一下.我们首先先从最简单的方法看起. ...

  3. MongoDB 数据库下载和安装

    MongoDB是一款非常流行的非关系型数据库,将面向对象数据存储做的非常好.这里就不具体介绍它的使用,本文主要解说怎样安装MongoDB数据库.把自己安装过程中碰到的问题和最后解决方法分享给大家,希望 ...

  4. hdu2546 饭卡 01-背包问题

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 Problem ...

  5. Linux内核编译測试

    内核编译: Step 1:配置内核编译选项. make menuconfig Optional Step :排除编译结果文件(.o)等之间的依赖性. make mrproper Optional St ...

  6. zzulioj--1705--小明在工作(模拟水题)

    1705: 小明在工作 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 179  Solved: 59 SubmitStatusWeb Board De ...

  7. [JZOJ 5912] [NOIP2018模拟10.18] VanUSee 解题报告 (KMP+博弈)

    题目链接: https://jzoj.net/senior/#contest/show/2530/2 题目: 众所周知,cqf童鞋对哲学有着深入的理解和认识,并常常将哲学思想应用在实际生活中,例如锻炼 ...

  8. BZOJ 3160 FFT+Manacher

    思路: 这道题思路好奇怪--. 我们先要知道关于x (x可以是间隙) 对称的有几对字母 显然暴力是n^2的 那怎么办呢 先把所有'a'看成1 'b'看成0 意外的发现 这不就是卷积嘛 再倒过来搞一搞 ...

  9. Java Servlet 3.0 新特性

    Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若 ...

  10. C#小代码

    1.创建随机ID: Id = Guid.NewGuid().ToString("N"); 2.创建随机时间: CreationTime = DateTime.Now: int st ...