RobbieHanson的XMPPFramework didReceiveMessage没有被调用

问题描述 投票:2回答:2

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

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

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

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

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

iphone ios xmpp xmppframework
2个回答
0
投票

只有当您的客户端收到如下所示的消息节时,才会调用didReceiveMessage委托:

<message xmlns="jabber:client" from="[email protected]" to="[email protected]" id="21" type="chat"><body>This is a sample message.</body></message>

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


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

© www.soinside.com 2019 - 2024. All rights reserved.