Whatsapp,Facebook和Skype消息传递在后台如何工作?

时间:2018-06-22 13:52:09

标签: android websocket socket.io firebase-cloud-messaging

我想问的是:

  1. 这些应用是否依靠FCM / GCM(或任何其他类型的)推送通知来同步其数据,或者它们是否通过服务通过后台使用套接字连接?
  2. 如果他们依靠推送通知,那么为什么他们在后台接收通知时没有任何损失,而我却在忙碌的时间中错过了10-15%的通知。
  3. 如果他们在后台依赖套接字连接,那么 这不是像恐龙一样吃电池吗?

我发现,如果我强制停止Messenger和Facebook,我仍然会收到消息,但比平常晚了一些。 另外,在Messenger,Facebook,Slack和Skype中有一个“允许后台活动”选项,当我禁用它时,我根本不会收到任何通知。 有趣的是,WhatsApp在其应用程序信息中没有此选项,如果我强制停止WhatsApp,它只会停止向我显示消息通知。

3 个答案:

答案 0 :(得分:4)

  

这些应用是否依赖FCM / GCM(或任何其他类型的)推送   同步数据或使用套接字的通知   通过服务在后台连接?

他们必须依靠FCM。

  

如果他们依靠推送通知,那么为什么他们没有任何通知   我错过了10-15%的通知时(后台)接收通知丢失   忙时发送通知。

他们必须使用在打ze模式下可靠交付的FCM high priority

  

如果他们在后台依赖套接字连接,那么   这不是像恐龙一样吃电池吗?

他们可能没有运行CPU密集型工作。

诸如Whatsapp之类的移动应用程序必须请求权限才能将其从打ze /省电和应用待机模式中排除。您可以参考我的答案here以获得更多详细信息。

答案 1 :(得分:0)

好吧,我不知道他们在后台(也许没有人)在做什么完全,但是让我们来看看这个概念。

在分布式系统和Web应用程序中,通常没有人 在后台使用推送通知系统来使它们的服务相互通信。尽管有可能,但是这些活动的服务具有更好的选择,例如发布者/订阅者模式和为我们带来此服务的技术(例如:reddis,MQ,Nats.io),它们具有高可用性,并且没有任何问题失败,并且数据仍在所有服务器上同步。

您的第二个问题以if开头,结果可能为false。但是可以说他们做到了。绝对不要将“ client to server连接和逻辑”与“ Server to server连接和逻辑”进行比较。我的意思是也许他们使用 Reddis 发布/订阅服务,但这并不意味着他们的客户端应该使用相同的系统来连接服务器。在支持大量消息同步的同时保持这些服务器连接的活动成本很高。

关于第三个问题。不,插座连接不会总是耗尽电池电量。这实际上取决于您如何使用它们。您也可以检查套接字空闲模式。

此外,当应用程序未运行或未连接到服务器时,诸如firebase之类的系统仍可能能够发送通知。伊朗政府封锁了Telegram时,我发生了很多次,但我仍然可以收到通知。它的其他故事,我想您只需稍作搜索就可以找到更多有关它的信息。

PS:请避免一次问太多问题。谢谢。

答案 2 :(得分:0)

添加到Sagar答案。

1)除非需要,否则从不显示来自FCM通知负载的通知。

2)一旦收到高优先级FCM,您就可以进行网络操作一段时间并从服务器获取数据,然后显示出来。如果失败,whatsapp会使用特殊的味精进行补充。  https://www.quora.com/Why-do-I-get-You-may-have-new-messages-notification-on-WhatsApp

3)暂时使用与应用程序图标绑定的前台服务/ cpu锁,直到获取数据为止,然后将其关闭。

PS:没有whatsapp不需要电池优化。他们可能会回复FCM高优先级消息。