【发布时间】: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