消息的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"] ) { } }