RobbieHanson的XMPPFramework didReceiveMessage没有被调用

时间:2013-01-31 03:51:25

标签: iphone ios xmpp xmppframework

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

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

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

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

最重要的是我要调用didReceiveMessage吗?谢谢!

2 个答案:

答案 0 :(得分:1)

要记住的一件事是,在身份验证之后,您需要发送状态,否则您将无法收到任何消息。

阅读以下博文:Build a complete iOS messaging app using XMPPFramework - Tutorial Part 1

  

成功连接后,您不会收到任何<message/>,直到您自己发送以前的状态为止。 <presence/>

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

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

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

Build a complete iOS messaging app using XMPPFramework - Part 2

答案 1 :(得分: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已被调用,那么我们可以假设我们已经正确设置了我们的代表。