首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XMPPFramework“键入.”消息状态

XMPPFramework“键入.”消息状态
EN

Stack Overflow用户
提问于 2014-07-30 15:37:21
回答 2查看 3K关注 0票数 3

我在当前的项目中使用robbiehanson/XMPPFramework。如何使用XMPPFramework获取消息输入状态?这里有XEP- 184协议,但现在已经不推荐了。在iOS中获取合成状态需要帮助。你好,Bhat

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-30 15:51:07

“联系人是输入”通知最常用的协议是XEP-0085:聊天状态通知。如前所述,给联系人的第一条消息应该包含一个“活动”状态元素(在<body/>元素旁边):

代码语言:javascript
复制
<active xmlns='http://jabber.org/protocol/chatstates'/>

如果联系人以聊天状态进行响应,则客户端可以继续使用其他状态,如“合成”:

代码语言:javascript
复制
<composing xmlns='http://jabber.org/protocol/chatstates'/>

或“暂停”(用户已输入文本,但未主动键入):

代码语言:javascript
复制
<paused xmlns='http://jabber.org/protocol/chatstates'/>

或“非活动”,并最终“消失”时,用户结束对话关闭聊天窗口或类似的。

票数 3
EN

Stack Overflow用户

发布于 2015-10-12 08:39:41

首先您需要导入:

代码语言:javascript
复制
#import "XMPPMessage+XEP_0085.h"

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

作曲……

代码语言:javascript
复制
- (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];
}

活跃.

代码语言:javascript
复制
- (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];
}

不活跃..。

代码语言:javascript
复制
- (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];
}

走了..。

代码语言:javascript
复制
- (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];
}

停下来..。

代码语言:javascript
复制
- (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)方法。

例如:

代码语言:javascript
复制
- (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"] ) {


        }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25041025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档