推送通知技术如何在Android上运行?

Kha*_*aza 200 android polling push-notification

Google如何实施推送通知功能?它是通过在后台运行的服务还是以不同的方式完成的轮询来工作的?

Tal*_*nel 160

从我在以色列举行的Android开发者大会上所听到的情况来看:

在云服务器上,只有一个TCP套接字在接受模式下等待.TCP连接已由Google Play应用程序启动.这就是为什么必须在设备上安装Google Play才能使Google云消息传递(GCM)(以前的Android云到设备消息服务 - C2DM)工作.

当此TCP客户端套接字收到一些消息时,该消息包含诸如应该应用的应用程序的包名称之类的信息,当然还包括数据本身.该数据被解析并打包成广播并最终由应用程序接收的意图.

即使设备的无线电状态变为"空闲"模式,TCP套接字仍保持打开状态.应用程序不必运行即可接收意图.

有关详细信息,请访问http://developer.android.com/google/gcm/gcm.html

  • @Khawar Raza:当设备的IP由于某种原因而改变时,设备与服务器断开连接.当它发生时 - 基于设备新IP,新连接astemblish. (2认同)
  • 我知道了.实际上这很有意思,我想知道这是不是真的. (2认同)
  • 所以它仍然是民意调查,但好的一面是民意调查由Google Play集中. (2认同)
  • 最后,计算机中的所有通信都只是轮询。路由器正在轮询 Google 服务器是否已发送数据包。网卡正在轮询路由器是否已将数据包重定向到它。CPU 正在轮询网卡是否已引发中断。这完全是关于如何有效地进行轮询。 (2认同)

Ani*_*kur 136

Android与Google的服务器保持一个活动连接,但它不会占用太多电量或数据,因为在向手机上的应用发送Google Cloud Messaging(GCM)消息之前,不会向其发送任何流量.所有应用程序都使用手机上只有一个连接:安装使用GCM的新应用程序不会增加任何额外负载.

GCM的第一步是第三方服务器(如电子邮件服务器)向Google的GCM服务器发送请求.然后,此服务器通过该打开的连接将消息发送到您的设备.Android系统会查看消息以确定它的应用程序,并启动该应用程序.该应用必须已在Android注册才能使用GCM,并且必须具有相关权限.当应用程序启动时,它可能会立即使用消息中的数据创建通知.GCM消息的大小非常有限,因此应用程序可能会打开与第三方服务器的正常连接以获取更多信息(例如,下载新电子邮件的标头).

使用推送通知的优势在于,应用程序不必定期运行以检查新数据,从而节省电力和数据.拥有像GCM这样的集中式机制的优势在于,设备只需要一个开放的网络连接,并且Android GCM系统是唯一需要继续运行的系统,而不是每个应用程序必须在后台保持运行才能保持自己的网络连接到自己的服务器.

这里得到这个:来源 也见这里.

  • 只是关于 GCM 连接的评论。该单个连接是轮询连接。 (2认同)

Shr*_*esh 9

您可以使用长轮询tcp连接在Android上实现推送通知.但这将涉及维持一个额外的插座=>电池消耗.或者,您可以使用警报管理器定期打开连接.

谷歌可能会为所有C2DM推送通知打开一个插槽,因此它的电池效率更高.