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


    原始地址: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"])//用户不在线
    		{
    			//列表和数据库都要相应改变
            }
        }
    }


     

  • 相关阅读:
    二叉树
    树的存储表示
    Jarvis OJ | WEB
    xctf | pwn进阶
    《C++Primer Plus》 | 处理数据
    xctf---stack2 | gdb&IDA 调试
    IDA | Windows主机与Ubuntu 16.04远程调试
    ROP | 中级
    IDA | 窗口
    epub reading
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3258116.html
Copyright © 2020-2023  润新知