• xmpp 消息和好友上下线(3)


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

    消息

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


    发送消息

    //发送消息的xml格式
    <message from='发送者账号'
        to='接收者账号'
        type='chat'>
    	<body>HELLO WORLD </body>
    	</message>

    //代码组装

    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];
     

    好友上下线通知

    - (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"])//用户不在线
    		{
    			//列表和数据库都要相应改变
            }
        }
    }
  • 相关阅读:
    深度优先和广度优先
    ajax<转>
    display:inline-block后会有间隙
    css样式多了个分号
    回答
    return false作用
    824. Goat Latin
    7. Reverse Integer
    48. Rotate Image
    9. Palindrome Number
  • 原文地址:https://www.cnblogs.com/yulang314/p/3705592.html
Copyright © 2020-2023  润新知