Google Cloud Messagin for Android

Google Cloud Messagin for Android

       GoogleCloud Messaging for Android(GCM)是一个允许你通过自己的服务器向你的android用户发送数据的服务,它同时也可以让android用户通过同样一个连接向你的服务器发送数据。

       重要的是,android设备不需要运行该app才能收到信息。系统会在信息到达的时候通过Intent broadcast唤醒该app(只要该app设置了broadcastreceiver许可)。

       该服务要求设备系统在Android2.2或更高,且安装了Google Play Store,或者运行在带有Google API的Android2.2或以上的虚拟器上。

       它使用现有的Google服务连接。3.0以前的设备需要用户在设备上设置自己的Google账号才行,而4.0.4以上的设备不需要Google账户。

 

Key Concepts

下面的表格总结了GCM中包含的主要关键字,它分为下面两个种类:

●       组件——GCM中重要的实体

●       证书——GCM中不同阶段使用的一些ID和安全令牌,确保各方验证成功,信息传达到正确的地方

组件(Components)

客户端App

已激活GCM服务的App需要运行在2.2以上Android设备上,且设备安装有Google Play Store。如果设备版本低于Android4.0.4,则需要登录Google账号。如果运行在模拟器上,需要带有Google API的2.2以上版本。

第三方服务器

第三方服务器通过GCM向android设备发送消息

GCM连接服务

Google提供的服务包括从第三方服务器接收发送过来的消息,以及将消息转发给android设备

证书(Credentials)

Sender ID

你从GCM的API控制台中获得的项目号。Sender ID在注册进程中识别第三方服务器并允许其发送消息给设备。

Application ID

Android的app要注册之后才可以获取信息。Android应用程序会在manifest文件中声明package名,这个ID能确保信息发送给正确的Android程序。

Registration ID

GCM给Android程序发布的ID号,通过该序列号允许设备接收信息。一旦Android应用程序拥有该序列号,它应当被发送到第三方服务器上,服务器使用该ID识别每一台设备是否已经注册,可以接收发送的信息。换句话说,该ID绑定了一个特别的设备上运行的一个特别的android应用程序。

Note:如果你使用了backup and restore,你应该显式的避免备份该Registration ID。当你备份设备的时候,app备份会任意的分享设定(Prefs)。如果你不显式的将GCM的注册ID排除在外,它可能会在一台新设备上被重复使用,从而导致error

Google User Account

如果你的设备低于android4.0.4,为了保证GCM的正常使用,你应该在设备上使用至少一个Google账号

Sender Auth Token

一个被保存在第三方服务器上的Api key允许该服务器经授权的通过Google服务。该API key被包含在POST请求的消息头中,用于请求发送信息

 

Architectural Overview

       一个GCM实施包括一个google提供的连接服务器,一个可以与google连接服务器交互的第三方app服务器,以及一个可以在Android设备上运行的经GCM授权的app。

 

 

 

 

 

 

下面是这些组件是如何交互的:

●       google提供的GCM Connection Service(GCM连接服务器)从第三方app服务器中获取数据,然后将这些小心发送给经GCM授权的app(client app)。目前GCM提供的connection server是HTTP和XMPP

●       第三方app服务器是你实现与你选择的GCM连接服务器的一个组件。App服务器发送信息给GCM连接服务器;GCM连接服务器将信息排队并储存,当设备在线的时候将信息发送给设备。更多参见Implementing GCMServer.

●       客户端app是经GCM授权的运行在设备上的android应用程序。为了获得从GCM发送过来的信息,该app必须在GCM上注册,并获得一个注册ID。如果你使用XMPP(CCS)连接服务器,客户端app发送回“upstream”信息给连接服务器。更多信息参见Implementing GCMClient.

 

Lifecycle Flow

●       Enable GCM

为了接收信息,运行在设备上的android应用程序必须向GCM注册

●       Send a message

一个第三方的app服务器向设备发送消息

●       Receive a message

一个android应用程序从GCM服务器上接收信息

 

Enable GCM

       Android应用程序需要使用信息服务的第一时间,它会调用GoogleCloadMessaging中的register()方法。该方法返回一个注册ID。Android应用程序应该将该ID存储下来为了后面的使用。(例如在onCreate()方法检查设备是否注册)

 

Send a message

       下面是当app服务器发送消息时会发生的一系列事情:

1.     app服务器发送信息给GCM服务器

2.     如果设备不在线,Google将信息列队并存储起来

3.     当设备在线,Google会将信息发送到设备上

4.     在设备上,系统通过带有相应允可的Intent broadcast将信息广播给特殊的Android应用程序(经授权的),所以只有目标Android应用程序会收到该信息。这将唤醒目标Android应用程序。该App不需要在前端运行才能收到信息

5.     app处理该信息。如果app正在执行non-trivialprocessing, 你可能希望抓住一个PowerManager.WakeLock并在service中执行任何操作。

 

当该app不希望收到信息时,任何android应用程序都可以从GCM中解除注册。

 

Receive a message

       下面是可接受信息的android应用程序在设备上安装时发生的一系列事情:

1.     系统收到了发送过来的信息,如果有的话,从信息载体中提取原始消息中的键值对信息。

2.     系统传递键值对信息给目标android应用程序,通过一个Intent叫做com.google.android.c2dm.intent.RECEIVE

3.     android应用程序从intent(com.google.android.c2dm.intent.RECEIVE)中提取原始数据并执行数据。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值