android – 我们是否应该使用GCM(或新的FCM)与openfire进行离线推送消息?

它接口就像使用聊天应用程序,使用openfire和smack可以有两种方式,

第一道路

> Smack与openfire服务器建立连接,只要连接到openfire服务器,它就可以接收并向服务器发送更新.如果它没有连接,那么openfire上的插件可以使消息保持脱机状态,并在客户端再次连接后发送它们.
在此方案中接收所有消息,

> 1.1如果没有互联网,设备应该只与openfire断开连接.
> 1.2用户退出
> 1.3设备离线

如果在任何其他情况下连接与服务器断开连接,则会导致邮件丢失.目前,应用程序正在使用此架构.

这种方法有问题:

>主要的问题是,如果由于任何崩溃,或问题应用程序被完全杀死,它的非警报管理器任务也会被杀死.应用程序在应用程序再次打开之前未重新启动
>第二个问题是,由于连续过程其消耗电池
>在更新的OS应用程序进入深度睡眠,打盹模式,ulta省电模式,背景

第二种方式

2.Smack与openfire服务器建立连接,只要连接到openfire服务器,它就可以接收并发送更新到服务器,直到应用程序处于前台.一旦进入后台,应用程序将完全与服务器断开连接.在这种情况下,当应用程序处于脱机状态时,openfire必须将所有消息发送到Firebase服务器,同一应用程序侦听firebase通知,当它从firebase接收通知时,它会重新连接到openfire并获取消息并显示或直接显示消息来自firebase(在这种情况下,此记录也会转到firebase服务器).应用程序从gcm接收该通知,然后需要在应用程序中管理有关消息传递等的信息.

问题

>当应用程序进入后台时断开与服务器的连接,处理其用例,因为应用程序在后台很长时间.应用程序是否在后台选择任何文件并使用此类案例.
>这使得代码和应用程​​序非常具有竞争性,并且还需要管理多个服务器.
>由于我不想与任何第三方共享我的应用程序消息数据,因此还可能存在更多安全漏洞.

我的问题

>哪种方式更好,更安全,更可靠?
>我的应用程序正在使用方式1,我应该切换到第二种方式吗?
>可以确定应用程序是否始终保持连接的可能原因是什么?它也消耗更少的面糊?

最佳答案 1-哪种方式更好,更安全,更可靠?

答:第二种方式

2-我的应用程序正在使用方式1,我应该切换到第二种方式吗?
答:你应该但显然需要Openfire技能来开发一个将消息路由到FCM的插件.

3-确保应用程序在每个方面保持连接的可能原因是什么?它也消耗更少的面糊?
答:简单地说,如果我们减少XMPP流量,可以节省处理能力,从而减少电池消耗.但显然对于聊天应用程序来说,这不是一个选择.因此,为了保持应用程序的交互性和电池友好性,您应该在应用程序转到后台并依赖推送通知(服务器端集成)时断开XMPP.

点赞