消息的XMPPFramework“input..”状态

我正在使用robbiehanson / XMPPFramework为我目前的项目。 如何使用XMPPFramework获得消息input状态? 有XEP-184协议,但现在不赞成。 在这里需要帮助获取在iOS中撰写状态。 问候,Bhat

“contact is typing”通知最常用的协议是XEP-0085:聊天状态通知 。 如此处更详细描述的,到联系人的第一个消息应该包含“活动”状态元素(紧挨着<body/>元素):

 <active xmlns='http://jabber.org/protocol/chatstates'/> 

如果联系人响应聊天状态,则客户端可以继续并使用其他状态,例如“撰写”:

 <composing xmlns='http://jabber.org/protocol/chatstates'/> 

或“已暂停”(用户input文本,但不能主动input):

 <paused xmlns='http://jabber.org/protocol/chatstates'/> 

或者“不活动”,并且当用户通过closures聊天窗口或类似物结束会话时最后“消失”。

首先你导入:

 #import "XMPPMessage+XEP_0085.h" 

然后根据您的目的添加以下方法。

构成…..

 - (void)sendComposingChatToUser:(XMPPJID*)jid { NSXMLElement *message = [NSXMLElement elementWithName:@"message"]; [message addAttributeWithName:@"type" stringValue:@"chat"]; [message addAttributeWithName:@"to" stringValue:[jid full]]; XMPPMessage *xmppMessage = [XMPPMessage messageFromElement:message]; [xmppMessage addComposingChatState]; [xmppStream sendElement:message]; } 

活性…..

 - (void)sendActiveChatToUser:(XMPPJID*)jid { NSXMLElement *message = [NSXMLElement elementWithName:@"message"]; [message addAttributeWithName:@"type" stringValue:@"chat"]; [message addAttributeWithName:@"to" stringValue:[jid full]]; XMPPMessage *xmppMessage = [XMPPMessage messageFromElement:message]; [xmppMessage addActiveChatState]; [xmppStream sendElement:message]; } 

非活动…

 - (void)sendInactiveChatToUser:(XMPPJID*)jid { NSXMLElement *message = [NSXMLElement elementWithName:@"message"]; [message addAttributeWithName:@"type" stringValue:@"chat"]; [message addAttributeWithName:@"to" stringValue:[jid full]]; XMPPMessage *xmppMessage = [XMPPMessage messageFromElement:message]; [xmppMessage addInactiveChatState]; [xmppStream sendElement:message]; } 

飘…

 - (void)sendExitChatToUser:(XMPPJID*)jid { NSXMLElement *message = [NSXMLElement elementWithName:@"message"]; [message addAttributeWithName:@"type" stringValue:@"chat"]; [message addAttributeWithName:@"to" stringValue:[jid full]]; XMPPMessage *xmppMessage = [XMPPMessage messageFromElement:message]; [xmppMessage addGoneChatState]; [xmppStream sendElement:xmppMessage]; } 

停顿了一下。

 - (void)sendPausedChatToUser:(XMPPJID*)jid { NSXMLElement *message = [NSXMLElement elementWithName:@"message"]; [message addAttributeWithName:@"type" stringValue:@"chat"]; [message addAttributeWithName:@"to" stringValue:[jid full]]; XMPPMessage *xmppMessage = [XMPPMessage messageFromElement:message]; [xmppMessage addPausedChatState]; [xmppStream sendElement:message]; } 

那么你应该在appdelgate中编写下面的代码。 (didReceiveMessage)方法。

例如:

 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message{ if ([message isChatMessageWithBody]){ } else{ if([message elementForName:@"composing"] != nil){ } else if ([message elementForName:@"paused"] != nil) { } else if ([message elementForName:@"gone"] || [message elementForName:@"inactive"] ) { } }