好的,这是我被困了这么多天的问题。
我正在 XMPP 客户端 - SMACK 的帮助下开发一个简单的聊天应用程序。从一个朋友到另一个朋友的正常聊天过程对我来说一切正常,还添加了通知部分。
我不能做的是,如果我用 SMACK 强行关闭我的应用程序,整个会话就会停止。
我无法将消息发送给已关闭应用程序的用户。现在,我如何保持用户的状态永久在线,这样即使他关闭了应用程序,他也可以接收消息。
你不能。如果应用程序关闭,则用户不再在线并且服务器知道这一点。您仍然可以向他们发送消息,但存储离线消息是服务器的工作,但这意味着必须将服务器配置为这样做。
一旦用户再次连接,就可以检索它们。
这里有一些解决问题的建议
尝试实施:
每 x 分钟连接一次的长时间运行的服务(轮询解决方案)我个人建议不要这样做,因为它会消耗网络和电池。
在您的应用程序和服务器中实施 GCM。它在发送消息并连接到服务器以检索有效负载时唤醒应用程序。(事实上,通过 C2DM 使用 GCM,您可以通过 google 发送有效负载,甚至不必连接,但我避开了这一点)