我有点困惑,在文档中找不到答案。我正在为 Android 开发一个简单的聊天应用程序。我已经创建了一个组(muc)并且一切正常,但是我每次打开应用程序时都必须继续调用 join() 吗?
我注意到它不能正常工作。不明白为什么,因为服务器知道我的 jabberID 连接到这个 muc。
希望我的问题足够清楚。谢谢。
A(我希望)完整的解释:简短的回答是肯定的。
当在您的服务器上创建了一个持久房间,并且您注销或退出房间时,您必须每次重新加入。注销或连接丢失是显而易见的,但是当您退出(离开)房间时,您也不会直接从房间收到消息(即使您仍然连接到服务器),服务器知道您的 id隶属于该 MUC(例如作为成员),但您不在其中,有关更多信息,请参阅有关 MUC 的 XEP,并阅读有关您的特定服务器如何在您的服务器文档中实现它的信息(可能将消息保存在房间到离线用户,或类似的东西)。
这基本上就是当您进出群聊时在 WhatsApp 中发生的事情,但他们也有自己的自定义方式(他们在基本 xmpp 服务器之上构建的层)让您了解未读消息,其中包括服务(您可以在手机中的常规设置->应用程序中看到它)和推送通知。
因此,即使您的应用关闭服务也将保留在后台,并且您将始终连接到聊天室。