我是XMPP的新手。我正在为我的聊天应用程序使用XMPP和Open fire服务器。该应用程序正在运行,但现在我想收到邮件发送收据。我使用以下代码,
在setupStream
:
xmppMessageDeliveryRecipts = [[XMPPMessageDeliveryReceipts alloc] initWithDispatchQueue:dispatch_get_main_queue()];
xmppMessageDeliveryRecipts.autoSendMessageDeliveryReceipts = YES;
xmppMessageDeliveryRecipts.autoSendMessageDeliveryRequests = YES;
[xmppMessageDeliveryRecipts activate:xmppStream];
在sendMessage
:
NSString *messageID=[xmppStream generateUUID];
NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
[message addAttributeWithName:@"type" stringValue:@"chat"];
[message addAttributeWithName:@"id" stringValue:messageID];
[message addAttributeWithName:@"to" stringValue:myJID];
[message addChild:body];
但我无法收到邮件投递。我怎么才能得到它?有人知道吗?
答案 0 :(得分:1)
您已收到送达回执,但XMPPMessageDeliveryReceipts
模块无法自动处理。您需要存储所有传入和传出消息(检查XMPPMessageArchiving
模块,它可以在XMPPMessageArchiving_CoreDataStorage
实例中保存消息),检查消息hasReceiptResponse
(在XMPPMessage+XEP_0184
类别中定义) ,在收据回复中找到消息ID,并在消息存储中将相应的消息标记为“已发送”(如果您将使用此模块,您可能需要添加新属性,例如“已发送”到XMPPMessageArchivingCoreDataObject
,或者自己创建存储机制)