2012-07-21 53 views
3

的帮助我正在使用robbiehanson/XMPPFramework作为我的当前项目,我可以向我的名单中的人员发送和接收消息,但现在我必须实现消息传递状态。我知道它的0184,我也包括在我的项目中,我很难利用它。需要有关使用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> 

请帮助我如何得到一个消息送达状态。

+0

可能重复的[如何使用XMPP框架获取消息存活状态](http://stackoverflow.com/questions/20852336/how-to-get-the-message-delivary-status-using-xmpp-framework ) – 2014-04-10 10:34:23

回答

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对象。

希望我帮了忙。

+0

你能详细解释一下吗?因为即使我们通过XMPP流实施了递送通知,但我们无法收到任何通知。请分享有关递送通知的更多信息 – Madhu 2016-02-02 08:57:42

+0

嘿,看看这里 - http://stackoverflow.com/questions/20852336/how-to-get-the-message-delivary-status-using-xmpp-framework?lq=1 它可能会帮助你多一点。 – 2016-02-03 09:30:27