2011-12-29 54 views
3

希望能找人熟悉的https://github.com/robbiehanson/XMPPFramework/wikiObjective-C的XMPPFramework离线队列

我的应用程序发送和接收运行的应用程序和iChat其他手机之间的消息。我正在使用安装在机架空间上的eJabberd。

问题是,如果我用手机发送消息给脱机电话,用户在他们的应用程序上线时不会收到消息(他们也不会在iChat中 - 消息从不排队) 。

但是,当我通过iChat发送消息,然后在我的手机上登录到我的应用程序时,消息就通过了。

看来,无论出于何种原因,我使用上面的XMPPFramework发送消息的方式不会触发服务器的排队功能。我已经按照规范here发送消息,看起来就像这(与不同的用户名)

message from='[email protected]/orchard' to='[email protected]'> 
    <body> 
    O blessed, blessed night! I am afeard. 
    Being in night, all this is but a dream, 
    Too flattering-sweet to be substantial. 
    </body> 
</message> 

具有相同的结果,很遗憾。我一直在试图找到一种方法来查看iChat的传出XML是什么样的,但无济于事。希望以前有人遇到过这个问题。

+0

离线消息传递是XMPP服务器的责任。你的服务器日志说什么? – Eric 2012-01-17 18:14:11

+0

感谢Eric的回复。当我再次访问日志时,我会回到此处。 – marklar 2012-01-26 04:32:41

+0

@marklar你有没有得到这个地方?当我使用库时,我也没有收到离线消息 – Krishnabhadra 2015-02-25 11:10:05

回答

3

离线消息是服务器的责任。 XEP-0160: Best Practices for Handling Offline Messages解释了如何处理离线消息。

在客户端,您需要确保您发送的消息类型为“正常”或“聊天”。

您还需要确保在eJabberd中启用了离线消息存储功能。

+0

嘿,我们正在从ejabberD切换到Tigase。我正在构建应用程序的聊天组件。当我开始再次执行xmpp组件时,会返回到此线程的结果。 – marklar 2012-02-18 22:38:25

+0

@eric当我们在离线模式比在队列中获取消息? - (void)xmppStream:(XMPPStream *)发送者didReceiveMessage:(XMPPMessage *)消息 当应用程序终止时,此方法不是调用正确的? – Raju 2016-04-18 12:50:15