XMPP iOS客户端 添加好友 (3)
来源:互联网 发布:php开源报表工具 编辑:程序博客网 时间:2024/04/30 11:16
这里记录下我实现添加好友的过程,网上虽然也有相应的例子,但说的不是很全面,其中有一篇没有给出
实现1 这里只是先初始化_xmppRoster 这个对象,
实现2 下面是登陆成功的回调,在下面的回调中添加下面代码:
上面的代码作用是将_xmppRoster对象与_xmppStream联系在一起。这样就能实现添加好友了,注意
XMPPRoster类的初始化。我找这个类的初始化设置找了好久。不多说啦。下面开始贴代码啦。
初始化XMPPRoster 对象声明
@interface XMPPModel()<XMPPStreamDelegate,XMPPRosterDelegate>@property (nonatomic , strong) XMPPStream *xmppStream;@property (nonatomic , strong) XMPPRoster *xmppRoster; //用户对象@property (nonatomic , strong) XMPPRosterCoreDataStorage *xmppRosterDataStorage;@end
实现1 这里只是先初始化_xmppRoster 这个对象,
// 初始化方法- (void)setupStream{ _xmppStream = [[XMPPStream alloc] init]; [_xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()]; _xmppRosterDataStorage = [[XMPPRosterCoreDataStorage alloc] init]; _xmppRoster = [[XMPPRoster alloc] initWithRosterStorage:_xmppRosterDataStorage];// _xmppRoster.autoFetchRoster = YES;// _xmppRoster.autoAcceptKnownPresenceSubscriptionRequests = YES;//}
实现2 下面是登陆成功的回调,在下面的回调中添加下面代码:
// 登陆成功- (void) xmppStreamDidAuthenticate:(XMPPStream *)sender{ [self goOnline]; NSLog(@"登陆成功"); [[NSUserDefaults standardUserDefaults] setObject:@"success" forKey:XMPPLogin]; [_xmppRoster activate:_xmppStream]; [_xmppRoster addDelegate:self delegateQueue:dispatch_get_main_queue()]; }
上面的代码作用是将_xmppRoster对象与_xmppStream联系在一起。这样就能实现添加好友了,注意
[_xmppRosteractivate:_xmppStream]; 这行代码要写在登陆成功回调的方法里,如果写在初始化
- (void)setupStream 这个方法里会出现死循环。
下面在贴下添加好友和处理好友请求的方法,下面的代码百度上又很多,主要的是上面的代码。
//// XMPPModel+Friend.m// XMPPTest//// Created by qitmac000246 on 12/26/14.// Copyright (c) 2014 杜甲. All rights reserved.//#import "XMPPModel+Friend.h"@implementation XMPPModel (Friend)// 添加好友- (void)addFriend:(NSString *)jidString xmppRoster:(XMPPRoster *)xmppRoster{ XMPPJID *jid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",jidString,@"shenqi"]]; [xmppRoster subscribePresenceToUser:jid];}//接受好友请求- (void) receiveContact:(XMPPStream *)sender presence:(XMPPPresence *)presence xmppRoster:(XMPPRoster *)xmppRoster{ NSString *presenceType = presence.type; NSString *userId = sender.myJID.user; NSString *presenceFromUser = presence.from.user; if (![presenceFromUser isEqualToString:userId]) { // 用户在线 if ([presenceType isEqualToString:@"available"]) { }else if([presenceType isEqualToString:@"unavailable"]) { }else if ([presenceType isEqualToString:@"subscribe"]) { // NSLog(@"%@",presence.description); // NSLog(@"%@",presence.from); XMPPJID *jid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@",presence.from]]; [xmppRoster acceptPresenceSubscriptionRequestFrom:jid andAddToRoster:YES]; } }}@end
原文地址:http://write.blog.csdn.net/postedit/42271089
0 0
- XMPP iOS客户端 添加好友 (3)
- xmpp-iOS-添加好友和删除好友
- iOS XMPP研究探索:添加好友
- IOS使用XMPP最新教程(五)添加好友和接受好友请求
- ios,xmpp 添加好友与好友请求处理
- XMPP之添加好友
- XMPP系列(三)---获取好友列表、添加好友
- 仿微信/QQ 开发基于XMPP的iPhone/iOS聊天客户端(一)好友资料
- Habber - IOS XMPP 客户端 教程 (三)着手制作好友列表
- xmpp 添加好友 好友状态监听
- iOS讲解迷惑--XMPP进阶 添加好友, 与好友聊天 (包括登录注册)
- iOS xmpp获取好友详情
- 【iOS XMPP】使用XMPPFramewok(三):好友状态
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 【iOS XMPP】使用XMPPFramewok(三):好友状态
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 【iOS XMPP】使用XMPPFramewok(三):好友状态
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- hdoj1007
- Android_XMLl解析和序列化
- BZOJ 1821 JSOI2010 部落划分 Group Kruskal
- hdu 2553 N皇后问题(dfs)
- CSS媒体查询
- XMPP iOS客户端 添加好友 (3)
- 数学之路-R-GUI编程(1)
- 大小不固定的图片、多行文字的水平垂直居中
- hdu5001---Walk
- 用于签名的数字证书
- Java关键字synchronized详解
- UVA - 10790 How Many Points of Intersection?
- CUDA初学,实现1000*256的数组运算
- WPF——画刷