XMPP 最后 received/sent 条消息未存档

XMPP last received/sent message is not archieving

我是第一次做 XMPP iPhone 聊天应用程序(使用 gitHub 的 XMPP 框架)。我可以发送和接收消息,但我的问题是:

现在我在聊天页面上,我已经使用一种方法从 XMPPMessageArchivingCoreDataStorage 获取所有存档消息并将其显示给用户。 当新消息到达时 "xmppStream: didReceiveMessage:" 方法将被调用,并且我已发布通知。该通知的接收者在聊天页面上设置。因此,当新消息通知到达时,我使用与之前相同的方法来获取存档消息,然后将其显示给用户。我这样做是为了向用户显示新消息。 但我的问题是,当消息 1 到达时它没有列出,然后消息 2 到达消息 1 列表,当消息 3 到达时消息 1 和 2 正在列出等等。但有时它工作正常。

我的疑惑是:

  1. 这是显示新消息的正确方式吗?
  2. 如果是,为什么最后一条消息有时没有存档?

提前致谢...

您的意思是所有消息都已收到? 如果是这样,您只需将所有消息添加到列表中,然后通知 Table 更新 data.To 确保它有效,在您的代码中添加一个 dispatch_async。

无需在收到新消息时发布通知。为此,我们可以使用 NSFetchedResultsController。

我已经通过使用 NSFetchedResultsController 管理 XMPPMessageArchivingCoreDataStorage 和 tableview 解决了这个问题。

See more about NSFetchedResultsController