xmpp-iOS-添加好友和删除好友
来源:互联网 发布:java stream map 编辑:程序博客网 时间:2024/04/30 11:43
#import "XMPPData.h"#import "XMPPFramework.h"//导入花名册相关头文件#import "XMPPRoster.h"#import "XMPPRosterMemoryStorage.h"#import "XMPPRosterCoreDataStorage.h"@interface XMPPData()<XMPPStreamDelegate,XMPPRosterDelegate>@property(strong,nonatomic) XMPPStream *xmppStream;@property(assign,nonatomic) BOOL isRegister;@property(strong,nonatomic) NSString*user,*pwd,*hostName,*domain;@property(assign,nonatomic) UInt16 port;@property(strong,nonatomic) XMPPRosterCoreDataStorage * rosterStorage;//花名册存储@property(strong,nonatomic) XMPPRoster * rosterModule;//花名册模块@end@implementation XMPPData//开始连接聊天服务器-(BOOL) connectWithUserName:(NSString*) username andPwd:(NSString*) pwd andHostName:(NSString*) hostname andDomain:(NSString*) domain andHostPort:(UInt16) port andIsRegister:(BOOL) isRegister{ self.hostName = hostname; self.port = port; self.domain = domain; self.user = username; self.pwd = pwd; self.isRegister = isRegister; self.xmppStream = [[XMPPStream alloc] init]; //设置代理 [self.xmppStream addDelegate:self delegateQueue:dispatch_get_global_queue(0, 0)]; //设置聊天服务器地址 self.xmppStream .hostName = hostname; //设置聊天服务器端口 默认是5222 self.xmppStream.hostPort = port; //设置Jid 就是用户名 XMPPJID *jid = [XMPPJID jidWithUser:username domain:domain resource:@"test"]; self.xmppStream.myJID = jid; NSError * error = nil; //验证连接 [self.xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error]; if (error) { NSLog(@"连接失败:%@",error); return NO; } else { //注册所有的模块 [self activeModules]; return YES; }}//激活相关的模块-(void) activeModules{ //1.花名册存储对象 self.rosterStorage = [XMPPRosterCoreDataStorage sharedInstance]; //2.花名册模块 self.rosterModule = [[XMPPRoster alloc] initWithRosterStorage:self.rosterStorage]; //3.激活此模块 [self.rosterModule activate:self.xmppStream]; //4.添加roster代理 [self.rosterModule addDelegate:self delegateQueue:dispatch_get_main_queue()]; }//添加好友-(BOOL) addFriend:(NSString*) friendName{ XMPPJID * friendJid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",friendName,self.domain]]; [self.rosterModule subscribePresenceToUser:friendJid]; return YES;}//删除好友-(BOOL) deleteFriend:(NSString*) friendName{ XMPPJID * friendJid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",friendName,self.domain]]; [self.rosterModule removeUser:friendJid]; return YES;}//收到好友请求 代理函数-(void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence{ XMPPJID * fromJid = presence.from; //直接通过 [self.rosterModule acceptPresenceSubscriptionRequestFrom:fromJid andAddToRoster:YES];}-(void)xmppRoster:(XMPPRoster *)sender didReceiveRosterItem:(DDXMLElement *)item{ NSString *subscription = [item attributeStringValueForName:@"subscription"]; NSLog(@"%@",subscription); if ([subscription isEqualToString:@"both"]) { NSLog(@"双方成为好友!"); }} //连接成功的代理函数-(void)xmppStreamDidConnect:(XMPPStream *)sender{ NSLog(@"连接成功"); if (self.isRegister) { NSError* error = nil; [sender registerWithPassword:self.pwd error:&error]; if (error) { NSLog(@"注册失败1,%@",error); } } else { NSError *error = nil; [sender authenticateWithPassword:self.pwd error:&error]; if (error) { NSLog(@"验证失败1,%@",error); } }}//连接失败代理函数-(void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error{ NSLog(@"连接失败,%@",error);}//验证成功代理函数-(void)xmppStreamDidAuthenticate:(XMPPStream *)sender{ NSLog(@"验证成功"); //4.登陆成功后 在线 [self.xmppStream sendElement:[XMPPPresence presence]];//用户在线}
0 0
- xmpp-iOS-添加好友和删除好友
- XMPP学习记录五:添加好友和删除好友
- xmpp 添加用户 添加好友请求 删除好友
- xmpp 好友列表,删除好友
- XMPP-好友列表模块的注册和好友列表获取,添加,删除
- ios,xmpp 添加好友与好友请求处理
- IOS使用XMPP最新教程(五)添加好友和接受好友请求
- ios xmpp研究探索:删除好友
- XMPP iOS客户端 添加好友 (3)
- iOS XMPP研究探索:添加好友
- XMPP增加删除好友
- XMPP之删除好友
- XMPP之添加好友
- xmpp 添加好友 好友状态监听
- XMPPFrameWork IOS 开发(五)获取好友信息和添加删除好友
- XMPPFrameWork IOS 开发(五)获取好友信息和添加删除好友
- [置顶] XMPPFrameWork IOS 开发(五)获取好友信息和添加删除好友
- XMPPFrameWork IOS 开发(五)获取好友信息和添加删除好友
- VS2008编译的MFC兼容性问题
- Android笔记-系统的复制粘贴功能及注意事项
- MVVM框架实践IOS集锦
- 带有Ajax调用的函数返回值问题
- 股民马斯洛需求层次对应
- xmpp-iOS-添加好友和删除好友
- python中的time模块相关参数
- Oracle client 下载地址 这个地址太难找了所以记录下来
- Linux+caffe+cpu配置
- golang gRPC示例
- 于仕琪老师《OpenCV入门教程》中某一程序在我电脑VS2008,opencv2.3.1上运行错误,“未使用调试信息生成二进制文件”,留待解决,
- 文档型信息交互设计及相关技术实现
- Debug Assertion Failed!
- Servlet