我在当前的项目中使用robbiehanson/XMPPFramework。如何使用XMPPFramework获取消息输入状态?这里有XEP- 184协议,但现在已经不推荐了。在iOS中获取合成状态需要帮助。你好,Bhat
发布于 2014-07-30 15:51:07
“联系人是输入”通知最常用的协议是XEP-0085:聊天状态通知。如前所述,给联系人的第一条消息应该包含一个“活动”状态元素(在<body/>元素旁边):
<active xmlns='http://jabber.org/protocol/chatstates'/>如果联系人以聊天状态进行响应,则客户端可以继续使用其他状态,如“合成”:
<composing xmlns='http://jabber.org/protocol/chatstates'/>或“暂停”(用户已输入文本,但未主动键入):
<paused xmlns='http://jabber.org/protocol/chatstates'/>或“非活动”,并最终“消失”时,用户结束对话关闭聊天窗口或类似的。
发布于 2015-10-12 08:39:41
首先您需要导入:
#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"] ) {
}
}https://stackoverflow.com/questions/25041025
复制相似问题