質問

現在のプロジェクトにはRobbiehanson / XMPPFrameworkを使用しています。 XMPPFrameworkを使用してメッセージ入力ステータスを取得する方法XEP-184プロトコルがありますが、現在推奨されていません。 iOSのステータスを作成するための援助が必要です。 よろしく bhat

役に立ちましたか?

解決

「連絡先の入力」のための最も一般的に使用されているプロトコルは、 XEP-0085:チャット状態通知。そこに詳しく説明されているように、連絡先への最初のメッセージには、「Active」状態要素(<body/>要素の隣)を含める必要があります。

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

連絡先がチャット状態で応答した場合、クライアントは先に進み、「作成」:

などの他の状態を使用できます。
<composing xmlns='http://jabber.org/protocol/chatstates'/>
.

または「一時停止」(ユーザーはテキストを入力しましたが、積極的に入力していません):

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

または「非アクティブ」、そして最後に、チャットウィンドウを閉じることによって会話を終了すると、最後に「なくなった」。

他のヒント

最初にインポート:

#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];
}
.

gone ...

- (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)方法。

ex:

- (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"] ) {


        }
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top