2011-04-27 47 views

回答

13

对于Android:Whatsapp建立在C2DM之上,当应用程序打开时,它会打开与其服务的XMPP连接以立即传递消息。他们也可能使用MQTT作为协议来减少电池使用量。基本上就是这样。

编辑:我学到了更多,Facebook在他们的消息应用程序中使用MQTT。 Whatsapp建立在XMPP上,并带有自己的扩展。他们的服务器端运行在ejabbard之上(erlang中的XMPP实现)。 http://www.ejabberd.im/

在2.1之前的设备上,WhatsApp可能会在后台保持与XMPP服务器之间的连接,但这对于电池寿命并不是很好。

+0

你如何确定他们在使用C2MD,请你详细说明一下,因为C2MD也使用XMPP协议,那么为什么WhatsApp不会使用他们自己的服务而不是使用C2MD? – Hunt 2014-06-04 05:54:51

0

我不知道在whatsapp中使用了什么确切的技术。但是,如果我要实施通知,其中不支持来自操作系统的推送通知,我可以做两件事:

  1. 每隔X秒轮询一次远程服务器并检查新通知(这是比较昂贵的选择)。
  2. 运行一个后台服务,维护与远程服务器的连接,这将向我发送任何要接收的通知(有点像我自己的推送通知实现)。
+0

您的第二种方法是否也适用于离线通知? – angelokh 2011-04-29 06:49:38

+0

你能详细说明'离线通知'的含义吗? – thekindofme 2011-04-29 06:52:54

+0

我认为在服务器端需要做一些事情,比如当目标设备关闭时将状态和通知存储到存储设备中。 – angelokh 2011-05-01 21:55:34

2

现在将C2DM替换为GCM (google cloud messaging)。您可以使用它将通知发送到您的应用程序。对于消息交换,应该依赖xmpp(whatsapp),mqtt(facebook messenger),mtproto(telegram)等协议。

如果您希望熟悉GCM。试试这个教程由appsrox - Create an Instant Messaging app using Google Cloud Messaging (GCM)

他们也使用GCM的消息传递以及。它不适合生产,但它对于想要开发即时消息android应用程序的人来说是一个很好的资源。

相关问题