【问题标题】:How to set the delayedDeliveryDate property of an XMPPMessage by XMPPFramework?如何通过 XMPPFramework 设置 XMPPMessage 的延迟交付日期属性?
【发布时间】:2021-02-08 18:22:14
【问题描述】:

我正在使用 XMPPFramework 实现根据 XEP-0313(消息存档管理)接收存档的 XMPP 消息。在我的 XMPPMessageArchiveManagementDelegate 中,我使用适当的委托方法一一接收消息:

public func xmppMessageArchiveManagement(_ xmppMessageArchiveManagement: XMPPMessageArchiveManagement, didReceiveMAMMessage message: XMPPMessage) { }

在收到的 XMPP 消息中,我有一个用于消息本身的 XML 元素和另一个用于延迟交付日期的 XML 元素,我可以将其转换为时间戳:

guard let timestamp = delayElement.attribute(forName: "stamp") else { return }

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"

guard let delayedDeliveryDate = dateFormatter.date(from:timestamp.stringValue)

我还能够从消息 XMPP 元素成功创建 XMPPMessage 对象:

let xmppMessage = XMPPMessage(from: messageElement)

问题是我不明白如何将延迟交付日期设置为 XMPPMessage 对象。最后一个有一个属性delayedDeliveryDate,但由于它的get-only状态,我无法设置它:

// xmppMessage.delayedDeliveryDate = delayedDeliveryDate
// It doesn't work because 'delayedDeliveryDate' is a get-only property

我试图找到一个初始化程序,我可以将延迟交货日期传递给它,但我无法在 XMPPMessage 类的可用初始化程序中准确找到此参数,而且我不明白如何使用可用参数来提供日期没有它,我将无法正确排序我的消息。

【问题讨论】:

    标签: ios xmpp xmppframework


    【解决方案1】:

    最后我能够绕过设置 XMPPMessage 的延迟交付日期属性的必要性来解决我的问题。我只是设置了我的数据库消息对象的适当属性,这足以用于排序目的:

    let dbMessage = DBMessage(xmppMessage: xmppMessage, date: delayedDeliveryDate)
    

    【讨论】:

      猜你喜欢
      • 2013-01-14
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 2020-04-27
      • 1970-01-01
      • 2019-03-19
      相关资源
      最近更新 更多