【问题标题】:XMPPFramework - 'didReceiveMessage' called two times when message is receivedXMPPFramework - 收到消息时调用两次“didReceiveMessage”
【发布时间】:2014-07-05 10:02:29
【问题描述】:

每当我收到任何新消息时,这两个方法都会被调用两次。

- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message

我正在向服务器发送请求以使用以下代码获取我的花名册。

NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"jabber:iq:roster"];
XMPPIQ *iq = [XMPPIQ iq];
[iq addAttributeWithName:@"id" stringValue:@"buddyRequest"];
[iq addAttributeWithName:@"to" stringValue:@"54.186.107.171"];
[iq addAttributeWithName:@"type" stringValue:@"get"];
[iq addChild:query];
[self.xmppStream sendElement:iq];

谁能指出问题出在哪里?

谢谢。

【问题讨论】:

  • 第一个代码块你只调用一次吗?当您的委托方法被调用时,对象是否相同(尤其是指针)?
  • 感谢您的重播。是的。我只有一次。好吧,当我从 spark 向我的应用程序发送消息时,DidReciveMessage 被调用了 2 次。所以我的表格视图在我的应用程序中显示了两条相同的消息。
  • 你设置XMPPStream的代理多少次了?
  • [xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];这行我打了两次。
  • 谢谢。我的问题已经解决了。实际上,对于第二行,我输入了 XMPPStream insted of xmpproster。非常感谢

标签: ios xmpp xmppframework


【解决方案1】:

我认为你将委托设置为 XMPPStream 两次。删除一个并检查。然后你也得到两个响应,检查 xmppstream 对象值。两者是不同的,你肯定设置了两次。

【讨论】:

    猜你喜欢
    • 2013-01-15
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    相关资源
    最近更新 更多