【问题标题】:Can't get message delivery receipt in XMPP无法在 XMPP 中获取消息传递回执
【发布时间】:2014-11-11 07:45:53
【问题描述】:

我是 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];

但我无法获得消息送达回执。我怎么才能得到它?有人知道吗?

【问题讨论】:

    标签: ios xmpp xmppframework


    【解决方案1】:

    您已经收到送货回执响应,但XMPPMessageDeliveryReceipts 模块不会自动处理它。您需要存储所有传入和传出的消息(检查XMPPMessageArchiving模块,它可以将消息保存在XMPPMessageArchiving_CoreDataStorage实例中),检查消息hasReceiptResponse(定义在XMPPMessage+XEP_0184类别中),在收据中找到消息id响应并在消息存储中将相应消息标记为“已传递”(如果您将使用此模块,则可能需要添加新属性,例如“已传递”到XMPPMessageArchivingCoreDataObject,或制作自己的存储机制)

    【讨论】:

    • 我收到这个:发送:4588
    • @DhvlGolakiya 收件人也必须支持 XEP-0184
    • 嘿 @vitalyster XMPPMessageArchiving_Message_CoreDataObject 没有 hasReceiptResponse 方法,它是 XMPPMessage 的方法,所以在哪里请求接收以及在哪里检查该消息是否已传递
    猜你喜欢
    • 1970-01-01
    • 2016-04-04
    • 2014-01-18
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多