需要有关使用xep-0184的帮助

时间:2012-07-21 09:19:18

标签: objective-c ios xmpp xmppframework

我正在使用robbiehanson/XMPPFramework作为我当前的项目,我可以向我名册中的人发送和接收消息,但现在我必须实现消息传递状态。我知道xep是0184而且我也包含在我的项目中,我很难利用它。

我在xep-0184 document中读到请求元素也必须包含在消息中,所以这是我的代码:

#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>

请帮助我如何获得邮件传递状态。

1 个答案:

答案 0 :(得分:2)

我想你忘了添加模块本身。 如果要添加XMPPModule(如XMPPMessageDeliveryReceipts),首先应将其添加到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对象时。

希望我帮助过。