如何通过XMPPFramework设置XMPPMessage的delayDeliveryDate属性?

问题描述

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

ORA-00933

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

import WinstonDailyRotate from "winston-daily-rotate-file";

const daily_rotate_transport = new WinstonDailyRotate({
  filename: "./logs/app",datePattern: "YYYY-MM/DD[.log]",});

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

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

问题是我不了解如何将延迟的传递日期设置为XMPPMessage对象。最后一个属性具有delayDeliveryDate属性,但由于其仅获取状态,我无法对其进行设置:

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)

我试图找到一个初始化程序,可以将延迟的传递日期传递给该初始化程序,但是我无法在XMPPMessage类的可用初始化程序中确切找到此参数,而且我不明白如何使用可用参数来提供日期没有这些信息,我将无法正确排序我的邮件

解决方法

最后,我能够绕过设置XMPPMessage的delayDeliveryDate属性的必要性来解决我的问题。我只需设置数据库消息对象的适当属性即可,足以用于排序:

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