我在iOS上开发并使用Robbie Hanson XMPPFramework。永远不会调用didReceiveMessage方法。
我确实成功连接,并发送了'在线状态(通过使用NSLog确认。这可以通过Openfire管理面板确认,该面板将用户显示为绿色并已连接。
XMPPPresence* presence = [XMPPPresence presence]; // type="available" is implicit
[[self xmppStream] sendElement:presence];
此外,我收到了didReceiveIQ电话。我不知道什么是智商,我需要处理它吗?
最重要的是我要调用didReceiveMessage吗?谢谢!
答案 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已被调用,那么我们可以假设我们已经正确设置了我们的代表。