GCM Architectural Overview 1

Posted on Fri 31 August 2012 in it

更详细的信息见android developer原文

Google Cloud Messaging for Android (GCM)是一个免费的服务,帮助开发者从服务器端发送数据到运行在Android设备上的应用程序。这个服务提供了一个轻量级的消息告知机制,用来告诉Android上的程序去服务器端拿新数据(例如一个朋友上传了一个片子),也可以是一条最大不超过4kb的数据(这样应用就能接到即时消息了)。GCM服务处理队列中的所有消息,把它们发送到目标机器上运行的指定程序。 想立马在Android应用中使用GCM,请看Getting Started介绍。

简介:GCM的主要特点

  1. 允许第三方应用从服务器发送消息到设备上的应用;
  2. GCM不保证消息的送到及送达的顺序;
  3. 客户端不需要一直运行来接收消息。当消息送达时系统会通过Intent broadcast来唤醒程序,当然程序需要设置好broadcast receiver和permissions。
  4. 不提供任何内建用户界面或处理器,GCM仅把收到的原始消息传递给程序,由客户端程序全权处理。
  5. GCM需要设备运行在Android2.2及以上版本,并且安装有Google Play Store应用;或者是运行Android2.2,具有Google APIs的虚拟机。对于程序部署方面,不要求必须通过Google Play Store安装的应用。
  6. GCM使用一个现有的连接访问谷歌服务。对3.0之前的设备,要求用户设置好谷歌账户,Android 4.0.4及更高版本对谷歌帐户不做要求。

架构概览

这一节介绍GCM的工作概况。

GCM中有两类关键的术语和概念: Components:GCM中的物理实体; Credentials:IDs和tokens,用来确保各阶段里各方的合法性,以确保消息正确送达。

Components
Mobile Device 移动设备要求Android版本2.2及以上,且必须安装Google Play Store;如果Android版本低于4.0.4,则必须至少有一个已经登录的谷歌账户,测试时,可以运行带Google APIs的Android 2.2以上版本的虚拟机。
3rd-party Application Server An application server that developers set up as part of implementing GCM in their applications. The 3rd-party application server sends data to an Android application on the device via the GCM server. 一个应用程序服务器,作为实现GCM的一部分。第三方程序服务端通过向GCM服务器发送消息来通知客户端。
GCM Servers Google的服务器,从第三方程序服务器收消息,然后发到目标手机上的目标程序
Credentials
Sender ID Getting Started所述,Sender ID是从API console获得的project ID,用来在registration process中标识允许向设备上发送消息的Android应用程序
Application ID Android客户端应用需要注册以接收消息,应用通过package name在manifest中进行标识。这确保了消息传递给正确的应用。
Registration ID 这个ID是由GCM servers发出的用来标识允许接收消息的客户端应用,一旦客户端应用获得了registration ID就把它发给第三方服务器,而第三方服务器记录此ID来标识接收消息的客户端。简而言之,一个registration ID绑定了一个运行在特定终端上的特定应用。
Google User Account 对于运行在低于Android 4.0.4版本的设备来说,要想GCM生效,设备上必须至少包含一个Google account。
Sender Auth Token 存储在第三方服务器上的API key,用来授权访问Google服务。这个key放在post请求的头信息中。

生命周期

云到端的主要过程包括: 1. Enabling GCM 客户端注册接收消息; 2. Sending a message 第三方程序服务器向设备发送消息; 3. Receiving a message Android程序从GCM服务器上接收消息

to be continued... Minocycline