XMPPFramework"输入..."状态为消息

Bha*_*hat 2 xmpp ios xmppframework

我正在为我当前的项目使用robbiehanson/XMPPFramework.如何使用XMPPFramework获取消息输入状态?有XEP-184协议,但现在已弃用.需要帮助来获取iOS中的撰写状态.问候,Bhat

小智 7

首先导入:

#import "XMPPMessage+XEP_0085.h"
Run Code Online (Sandbox Code Playgroud)

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

构成.....

- (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];
}
Run Code Online (Sandbox Code Playgroud)

活性.....

- (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];
}
Run Code Online (Sandbox Code Playgroud)

非活动...

- (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];
}
Run Code Online (Sandbox Code Playgroud)

飘...

- (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];
}
Run Code Online (Sandbox Code Playgroud)

停顿了一下.

- (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];
}
Run Code Online (Sandbox Code Playgroud)

那么你应该在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"] ) {


        }
}
Run Code Online (Sandbox Code Playgroud)

  • 使用XMPP Clas import #import“ XMPPMessage + XEP_0085.h”,然后使用下面提到的功能。-(BOOL)hasChatState-(BOOL)hasActiveChatState-(BOOL)hasComposedChatState-(BOOL)hasPausedChatState-(BOOL)hasInactiveChatState-(BOOL)hasGoneChatState例如if([message hasGoneState])....比较干净的方法。 (2认同)