3

私は現在のプロジェクトでrobbiehanson/XMPPFrameworkを使用しています。名簿内の人々とメッセージを送受信できますが、メッセージ配信ステータスを実装する必要があります。私は xep の 0184 を知っており、自分のプロジェクトにも含めましたが、それを利用するのに苦労しています。

request 要素もメッセージに含める必要があるxep-0184 ドキュメントを読んだので、私のコードは次のとおりです。

#import "XMPPMessage+XEP_0184.h"
.
.
.
NSXMLElement *body = [NSXMLElement elementWithName:@"body"];

[body setStringValue:messageStr];

NSXMLElement *request = [NSXMLElement elementWithName:@"request" xmlns:@"urn:xmpp:receipts"];

NSXMLElement *message = [NSXMLElement elementWithName:@"message"];

[message addAttributeWithName:@"type" stringValue:@"chat"];

[message addAttributeWithName:@"to" stringValue:[defaults objectForKey:@"chatWith"]]; 
[message addChild:body];
[message addChild:request];
.
.
.
XMPPMessage *xm = [[XMPPMessage alloc]init];
NSLog(@"..1..%d",[xm hasReceiptRequest]);        // Result = 0
NSLog(@"..2..%d",[xm hasReceiptResponse]);       // Result = 0
NSLog(@"..3..%@",[xm extractReceiptResponseID]); // Result = (null)
NSLog(@"..4..%@",[xm generateReceiptResponse]);  // Result = <message><received xmlns="urn:xmpp:receipts"></received></message>

メッセージ配信ステータスを取得する方法を教えてください。

4

1 に答える 1

2

モジュール自体を追加するのを忘れたと思います。XMPPMessageDeliveryReceipts のような XMPPModule を追加する場合は、最初に XMPPStream オブジェクトに追加する必要があります。その後、その関数を使用できます。

以下をせよ:

// Setup Message Delivery Recipts Object
XMPPMessageDeliveryReceipts* xmppMessageDeliveryRecipts = [[XMPPMessageDeliveryReceipts alloc] initWithDispatchQueue:dispatch_get_main_queue()];
xmppMessageDeliveryRecipts.autoSendMessageDeliveryReceipts = YES;
xmppMessageDeliveryRecipts.autoSendMessageDeliveryRequests = YES;

[xmppMessageDeliveryRecipts activate:xmppStream];

xmppStream がメインの XMPPFramework オブジェクトの場合。

私が助けてくれることを願っています。

于 2013-06-08T19:47:26.387 に答える