我正在开发iOS并使用Robbie Hanson XMPPFramework。永远不会调用didReceiveMessage方法。
我成功连接并发送'在线'(通过使用NSLog确认。这可以通过Openfire管理面板确认,该面板将用户显示为绿色并已连接。
XMPPPresence* presence = [XMPPPresence presence]; // type="available" is implicit
[[self xmppStream] sendElement:presence];
此外,我收到了didReceiveIQ电话。我不知道什么是智商,我需要处理它吗?
最重要的是我要调用didReceiveMessage。谢谢!
只有当您的客户端收到如下所示的消息节时,才会调用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已被调用,那么我们可以假设我们已正确设置了我们的代理。
要记住的一件事是,在身份验证之后,您需要发送存在,否则您将不会收到任何消息。
阅读以下博文: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