2

我正在 iOS 上开发并使用 Robbie Hanson XMPPFramework。永远不会调用方法 didReceiveMessage。

我确实成功连接,并发送了“存在”(通过使用 NSLog 确认。这可以通过 Openfire 管理面板确认,该面板将用户显示为绿色并已连接。

    XMPPPresence* presence = [XMPPPresence presence]; // type="available" is implicit
[[self xmppStream] sendElement:presence];

此外,我收到了 didReceiveIQ 电话。我不知道什么是智商,我需要处理它吗?

最重要的是我是否让 didReceiveMessage 被调用。谢谢!

4

2 回答 2

1

要记住的一件事是,在身份验证后,您需要发送出席信息,否则您将不会收到任何消息。

阅读以下博客文章:使用 XMPPFramework 构建完整的 iOS 消息传递应用程序 - 教程第 1 部分

成功连接后,您将不会收到任何<message/>信息,直到您可以发送之前的状态。<presence/>

你的代码中应该有这样的东西:

func xmppStreamDidAuthenticate(_ sender: XMPPStream!) {
    self.xmppStream.send(XMPPPresence())
    print("Stream: Authenticated")
}

如果您查看我发布的教程的第二部分,您将了解如何执行身份验证以及所有内容:

使用 XMPPFramework 构建完整的 iOS 消息应用程序 - 第 2 部分

于 2018-03-05T21:08:05.577 回答
0

只有当您的客户端收到这样的消息节时,才会调用 didReceiveMessage 委托:

<message xmlns="jabber:client" from="juliet@capulet.net" to="romeo@capulet.net" id="21" type="chat"><body>This is a sample message.</body></message>

如果其他 XMPP 客户端向您发送聊天消息,则会收到此节。如果您的 didReceiveIQ 已经被调用,那么我们可以假设我们已经正确设置了我们的代表。

于 2013-02-03T01:22:20.323 回答