XMPP消息时间

Posted

技术标签:

【中文标题】XMPP消息时间【英文标题】:XMPPMessage time 【发布时间】:2014-12-30 15:55:27 【问题描述】:

我正在使用适用于 iosXMPPFramework,我需要显示消息的日期和时间。 经过一番搜索,我认为我应该使用XMPPAutoTime 模块,但我没有找到一些示例。

我在流设置中使用过:

xmppAutoTime = [[XMPPAutoTime alloc] initWithDispatchQueue:dispatch_get_main_queue()];
[xmppAutoTime activate:self.xmppStream];

我的发送消息方法如下:

NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
[message addAttributeWithName:@"type" stringValue:@"chat"];
[message addAttributeWithName:@"to" stringValue:to];

[message addChild:[XMPPTime timeElement]];

NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
[body setStringValue:text];
[message addChild:body];

我的 XML 看起来像:

<message type="chat" to="toJID">
    <time xmlns="urn:xmpp:time">
        <tzo>+03:00</tzo>
        <utc>2014-12-30T15:24:22Z</utc>
    </time>
    <body>message text</body>
</message>

所以你可以看到我有时间,这是正确的。问题是我如何将它用于XMPPMessage

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message

【问题讨论】:

【参考方案1】:

我也在研究 XMPP,很高兴您有这个问题,因为我不知道如何为我发送的消息添加时间。

无论如何,我不确定是否有更简单或更正确的方法,但我使用这个:

[[message elementForName:@"time"] elementForName:@"utc"]

didReceiveMessage 委托方法中从 XML 中提取时间。

【讨论】:

以上是关于XMPP消息时间的主要内容,如果未能解决你的问题,请参考以下文章

如何获取带有时间戳 XMPP iOS 的消息?

XMPP 上的未读消息计数

Xmpp 消息边界

在重试同一条消息之前,GCM CCS 等待 XMPP 服务器的确认多长时间?

在 xmpp 中接收消息

XMPP 阻止消息