XMPP学习记录四:关于接受,发送消息和获取好友上下线的状态

6 篇文章 0 订阅

消息

  1. //收到消息    
  2. - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message{    
  3.         
  4. //    NSLog(@"message = %@", message);    
  5.     //消息的内容   
  6.     NSString *msg = [[message elementForName:@"body"] stringValue];   
  7.     //消息发送者   
  8.     NSString *from = [[message attributeForName:@"from"] stringValue];    
  9.           
  10.     /****在此处****/  
  11.     //通知聊天页面有新消息,需要处理    
  12.         
  13. }   


发送消息

  1. //发送消息的xml格式  
  2. <message from='发送者账号'  
  3.     to='接收者账号'  
  4.     type='chat'>  
  5.     <body>HELLO WORLD </body>  
  6.     </message>  


//代码组装

  1. NSString *message = @"HELLO WORLD";  
  2.     NSXMLElement *body = [NSXMLElement elementWithName:@"body"];  
  3.     [body setStringValue:message];  
  4.       
  5.     //生成XML消息文档  
  6.     NSXMLElement *mes = [NSXMLElement elementWithName:@"message"];  
  7.     //消息类型  
  8.     [mes addAttributeWithName:@"type" stringValue:@"chat"];  
  9.     //发送给谁  
  10.     [mes addAttributeWithName:@"to" stringValue:@"接受者账号"];  
  11.     //由谁发送  
  12.     [mes addAttributeWithName:@"from" stringValue:@"发送者账号"];  
  13.     //组合  
  14.     [mes addChild:body];  
  15.       
  16.     //发送消息  
  17.     [[self xmppStream] sendElement:mes];  


好友上下线通知

  1. - (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence  
  2. {     
  3.     //取得好友状态  
  4.     NSString *presenceType = [presence type]; //online/offline  
  5.     //当前用户  
  6.     NSString *userId = [[sender myJID] user];  
  7.     //在线用户  
  8.     NSString *presenceFromUser = [[presence from] user];  
  9.     /* 
  10.      //如果不是自己,如果涉及多段登录,此处最好加上else,如果是自己离线的话,调用上线协议 
  11.      XMPPPresence *presence = [XMPPPresence presence]; 
  12.      [[self xmppStream] sendElement:presence]; 
  13.      */  
  14.     if (![presenceFromUser isEqualToString:userId])  
  15.     {  
  16.         //用户在线  
  17.         if ([presenceType isEqualToString:@"available"])  
  18.         {  
  19.             //列表和数据库都要相应改变  
  20.         }else if ([presenceType isEqualToString:@"unavailable"])//用户不在线  
  21.         {  
  22.             //列表和数据库都要相应改变  
  23.         }  
  24.     }  
  25. }  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值