它接口就像使用聊天应用程序,使用openfire和smack可以有两种方式,
第一种方式
Smack与openfire服务器建立连接,只要连接到openfire服务器,它就可以接收并向服务器发送更新。如果它没有连接,那么openfire上的插件可以使消息保持脱机状态,并在客户端再次连接后发送它们。在此方案中接收所有消息,
1.1如果设备没有互联网,设备应该只与openfire断开连接。
1.2用户退出
1.3设备离线
如果在任何其他情况下连接与服务器断开连接,则会导致邮件丢失。目前,应用程序正在使用此架构。 这种方法存在问题:
这个问题的主要问题是,如果由于任何崩溃或问题应用程序被完全杀死,并且它的非警报管理器任务也会被杀死。应用程序在应用程序再次打开之前未重新启动 与此相关的第二个问题是,由于连续过程,它消耗电池 在更新的OS应用程序进入深度睡眠,打盹模式,ulta省电模式,背景 第二种方式
第二种方式: -
Smack与openfire服务器建立连接,只要连接到openfire服务器,它就可以接收并向服务器发送更新,直到应用程序处于前台。一旦进入后台,应用程序将完全与服务器断开连接。在这种情况下,当应用程序处于脱机状态时,openfire必须将所有消息发送到Firebase服务器,同一应用程序侦听firebase通知,当它从firebase接收通知时,它会重新连接到openfire并获取消息并显示或直接显示消息来自firebase(在这种情况下,此记录也会转到firebase服务器)。应用程序从gcm接收该通知,然后需要在应用程序中管理有关消息传递等。
问题
我想知道第二种方法比使用openfire自定义插件通知更好吗?
答案 0 :(得分:0)
推送通知要求在Openfire中非常常见,但没有公开适用的解决方案。
关于第二种方式,是的,如果它适合你,似乎没问题。您可以利用firebase功能。
关于邮件丢失,您必须开始使用流管理(XEP-0198)来避免它。