XMPP

- (void)viewDidLoad

{

    [super viewDidLoad];

    

    //stream

    _stream = [[XMPPStream alloc] init];

    //设置服务器名称

    [_stream setHostName:HOST];

    [_stream addDelegate:self delegateQueue:dispatch_get_main_queue()];

    

    _roster = [[XMPPRoster alloc] initWithRosterStorage:[[XMPPRosterCoreDataStorage alloc] init]];

    [_roster addDelegate:self delegateQueue:dispatch_get_main_queue()];

    [_roster activate:_stream];

}


//上线

-(void)goOnline

{

    //<prseence/>

    XMPPPresence *presence = [XMPPPresence presence];

    [_stream sendElement:presence];

}


//下线

-(void)goOffline

{

    //<presence type="unavailable"/>

    XMPPPresence *prsence = [XMPPPresence presenceWithType:@"unavailable"];

    [_stream sendElement:prsence];

    [_stream disconnect];

}


//登陆

-(void)login:(id)sender

{

    if (_stream.isConnected) {

        [self goOffline];

    }

    //设置账号

    [_stream setMyJID:[XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",_nameField.text,HOST]]];

    _stream.tag = @"登陆";

    //连接

    [_stream connectWithTimeout:30 error:nil];

    

}

//注册

-(void)regist:(id)sender

{

    if (_stream.isConnected) {

        [self goOffline];

    }

    //设置账号

    [_stream setMyJID:[XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",_nameField.text,HOST]]];

    _stream.tag = @"注册";

    //连接

    [_stream connectWithTimeout:30 error:nil];

    

}

//连接成功

-(void)xmppStreamDidConnect:(XMPPStream *)sender

{

    NSLog(@"连接成功");

    //注册

    if ([sender.tag isEqualToString:@"注册"]) {

        [_stream registerWithPassword:_passwordField.text error:nil];

    }

    //登陆

    if ([sender.tag isEqualToString:@"登陆"]) {

        [_stream authenticateWithPassword:_passwordField.text error:nil];

    }

}

//连接失败

-(void)xmppStreamConnectDidTimeout:(XMPPStream *)sender

{

    NSLog(@"连接失败");

}

//登陆成功

-(void)xmppStreamDidAuthenticate:(XMPPStream *)sender

{

    NSLog(@"登陆成功");

    [self goOnline];

}


//注册成功

-(void)xmppStreamDidRegister:(XMPPStream *)sender

{

    NSLog(@"注册成功");

}


//添加好友

-(void)addFriend:(id)sender

{

    /*

     <presence type="subscribe" to="">

     */

    //第一种方法

//    XMPPPresence *presence = [XMPPPresence presenceWithType:@"subscribe" to:[XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",_friendField.text,HOST]]];

//    [_stream sendElement:presence];

    

    //第二种方法

    [_roster subscribePresenceToUser:[XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",_friendField.text,HOST]]];

    

}


//接收到好友列表

-(BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq

{

    /*

     <iq>

     <query>

     <Item jid=“令狐冲@1000phone.net”/>

     <Item jid=“岳不群@1000phone.net”/>

     ……...

     </query>

     </iq>

     */

    NSArray *query = iq.childElement.children;

    for (NSXMLElement *item in query) {

        NSLog(@"%@",[item attributeStringValueForName:@"jid"]);

    }

    

    return YES;

}


//同意添加好友

-(void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence

{

    if ([presence.fromStr isEqualToString:HOST]) {

        return;

    }

    [_roster acceptPresenceSubscriptionRequestFrom:presence.from andAddToRoster:NO];

    NSLog(@"同意添加%@为好友",presence.fromStr);

}



//发送消息

-(void)sendMessage:(id)sender

{

    /*

     <message type=“chat” to=“">

     <body>

     今天星期三

     </body>

     <image>

     image base64

     </image>

     </message>

     */

    XMPPMessage *message = [XMPPMessage messageWithType:@"chat" to:[XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",_friendField.text,HOST]]];

    NSXMLElement *body = [XMPPElement elementWithName:@"body" stringValue:_messageField.text];

    [message addChild:body];

    

    [_stream sendElement:message];

    

}


//接接收到消息

-(void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message

{

    NSLog(@"%@",message.XMLString);

}


//好友列表

-(void)getFriendList:(id)sender

{

    /*

     <iq type=“get” id=“roster”>

     <query xmlns=“jabber:iq:roster”/>

     </iq>

     */

    XMPPIQ *iq = [XMPPIQ iqWithType:@"get"];

    [iq addAttributeWithName:@"id" stringValue:@"roster"];

    NSXMLElement *query = [XMPPElement elementWithName:@"query" xmlns:@"jabber:iq:roster"];

    [iq addChild:query];

    

    [_stream sendElement:iq];

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值