(转载)XMPPFrameWork IOS 开发(四)消息和好友上下线

原始地址:XMPPFrameWork IOS 开发(四)

消息

[cpp] view plain copy print?
//收到消息    
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message{    
        
//    NSLog(@"message = %@", message);    
    //消息的内容   
    NSString *msg = [[message elementForName:@"body"] stringValue];   
    //消息发送者   
    NSString *from = [[message attributeForName:@"from"] stringValue];    
          
    /****在此处****/  
    //通知聊天页面有新消息,需要处理    
        
}   

发送消息
[cpp] view plain copy print?
//发送消息的xml格式  
  
    HELLO WORLD   
      

//代码组装
[cpp] view plain copy print?
NSString *message = @"HELLO WORLD";  
    NSXMLElement *body = [NSXMLElement elementWithName:@"body"];  
    [body setStringValue:message];  
      
    //生成XML消息文档  
    NSXMLElement *mes = [NSXMLElement elementWithName:@"message"];  
    //消息类型  
    [mes addAttributeWithName:@"type" stringValue:@"chat"];  
    //发送给谁  
    [mes addAttributeWithName:@"to" stringValue:@"接受者账号"];  
    //由谁发送  
    [mes addAttributeWithName:@"from" stringValue:@"发送者账号"];  
    //组合  
    [mes addChild:body];  
      
    //发送消息  
    [[self xmppStream] sendElement:mes];  


好友上下线通知
[cpp] view plain copy print?
- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence  
{     
    //取得好友状态  
    NSString *presenceType = [presence type]; //online/offline  
    //当前用户  
    NSString *userId = [[sender myJID] user];  
    //在线用户  
    NSString *presenceFromUser = [[presence from] user];  
    /* 
     //如果不是自己,如果涉及多段登录,此处最好加上else,如果是自己离线的话,调用上线协议 
     XMPPPresence *presence = [XMPPPresence presence]; 
     [[self xmppStream] sendElement:presence]; 
     */  
    if (![presenceFromUser isEqualToString:userId])  
    {  
        //用户在线  
        if ([presenceType isEqualToString:@"available"])  
        {  
            //列表和数据库都要相应改变  
        }else if ([presenceType isEqualToString:@"unavailable"])//用户不在线  
        {  
            //列表和数据库都要相应改变  
        }  
    }  
}  

你可能感兴趣的:((转载)XMPPFrameWork IOS 开发(四)消息和好友上下线)