xmpp-iOS-添加好友和移除朋友

來源:互聯網
上載者:User

標籤:ios   xmpp   xmpp ios   

#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]];//使用者線上}

xmpp-iOS-添加好友和移除朋友

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.