XMPPFFramework「Typing ..」というステータス
-
21-12-2019 - |
質問
現在のプロジェクトには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"] ) {
}
}
. 所属していません StackOverflow