`

Android Cloud to Device Messaging Framework(一)

 
阅读更多

原文出自:http://code.google.com/intl/zh-CN/android/c2dm/index.html

 

 

Android Cloud to Device Messaging(C2DM)是一个能够帮助开发者从服务器端发送数据到运行在Android手机上的程序的服务。这个服务提供了一个简单,轻量级的机制使得服务器端可以告诉移动端的程序与服务器端建立直接的联系,来获取更新的程序或者用户的数据。C2DM服务可以处理所有的消息队列的问题并且可以把消息发送到目标机器上运行的目标程序。

简介

C2DM的主要特点:

1.它允许第三方的程序服务端发送少量的消息到程序的客户端。这个消息服务不是设计成可以发送大量的内容这个服务应该用在告诉客户端服务器端有新的数据,然后服务器端去获取新的数据。

2. C2DM不能保证消息的分发和消息的顺序。所以,当你使用这个服务来告诉即时通讯程序用户有新的消息时,你很可能收不到这个消息。

3.  手机端的程序不需要一直运行来接收消息。系统会通过Intent  broadcast来唤醒程序当有新的消息到来时。当然程序需要设置适当的broadcast  receiverpermission

4.它不提供任何的用户界面或者其他的东西来处理消息。C2DM只是简单的把收到的原始消息传递给程序。这个程序提供了处理这个消息的方法。比如,这个程序可能抛出一个通知,显示一个自定义的界面或者只是同步数据。

5.  C2DM要求手机必须运行Android2.2或者更高版本,并且要有market。但是,你不仅限于通过市场部署你的程序。

6.  C2DM使用一个现有的google 服务连接。这就要求用户需要在他们的手机上登录google账户。

C2DM如何工作?

这一节给你一个C2DM如何工作的概况。

下面这张表总结了C2DM里面关键的术语和概念。它们分成下面两类:

1.  ComponentsC2DM里面包含的组件

2. Credentials:用在不同阶段来确认各方都已经被认证的IDstokens。这样消息才能发到正确的地方。

Components

Mobile Device

运行着需要使用C2DMandroid程序的手机.这个手机需要运行Android2.2或者更高版本,需要有market,并且有一个登录的google账户。

Third-Party Application Server

第三方程序服务端通过C2DM服务器发送消息到运行Andoird程序的手机。

C2DM Servers

Google服务器,从第三方程序服务器收消息并发到目标手机上的目标程序。

Credentials

Sender ID

和程序开发者相关的gmail账户。Sender ID用在注册阶段去识别被允许发送消息到手机的android程序。 这个ID通常不是基于个人的账户,而是基于程序。比如,my-app@gmail.com

Application ID

注册了用来接收消息的程序。 这个程序是通过manifest的包名来识别的。这样确保消息会发送到正确的程序。

Registration ID

这个IDC2DM服务器分发的,用来允许程序接收消息。 当程序有了registration ID, 就把这个ID发送到第三方程序服务器, 第三方服务器用ID来识别每一个注册了来接收消息的手机。换句话说,registration ID是和运行在某个手机上的摸个程序绑定的。

Google User Account

如果C2DM要工作,手机就至少有一个已经登录的google账户。

Sender Auth Token

ClientLogin Auth是保存在第三方程序服务器上用来让程序服务器可以被授权获得google服务。当服务器发送消息的时候这个token包含在postheader里面。更多关于 ClientLogin Auth tokens, 查看 ClientLogin for Installed Applications

生命周期流程

下面是C2DM的主要过程:

1.       Enabling C2DM:运行在手机上注册了来接收消息的Android程序。

2.       Sending a message:发送消息到手机的第三方程序服务器。

3.       Receiving a message:从C2DM服务器接收消息的Android程序。

下面是上面3个步骤的详细描述。

Enabling C2DM

下面是运行在手机上的Android程序注册接收消息的步骤:

1.       程序第一次要使用消息服务时,应该设置一个registration intentC2DM 服务器。这个registration intent(com.google.android.c2dm.intent.REGISTER)包括sender ID(通常是程序开发者设置的gmail账户,用来授权发送消息给程序)application ID

2.       如果注册成功,C2DM服务器broadcasts一个给予程序registration IDREGISTRATION Intent。程序应该保存这个ID留待后用。google可能定期的刷新registration ID,所以你的REGISTRATION Intent必须可以多次调用。程序应该能够做出相应的处理。

3.       为了完成注册,程序要把registration ID发送给第三方服务器端。第三方程序服务器通常把这个ID存在数据库中。

registration ID一直有效,直到程序明确的解除注册,或者google刷新了registration ID

Sending a Message

如果第三方程序服务器要发送消息,下面的事情必须就位:

1.       对某个特定的设备,这个程序有一个允许它接收消息的registration ID

2.       第三方程序服务器存储了这个registration ID

还有一件事情必须做: ClientLogin authorization token。这个是开发者必须在第三方程序服务器上为程序设置的东西(更多信息,看这里 Role of the Third-Party Application Server)。现在它被用来发送消息到手机。

 

ClientLogin token授权第三方程序服务器发送消息给特定的Android程序。第三方程序服务器有第三方程序的一个ClientLogin token和很多的registration IDs。每一个registration ID代表一个特定的注册了可以为第三方程序使用消息服务的手机。

 

下面是第三方程序服务器发送消息的步骤:

1.    第三方程序服务器发送消息到C2DM服务器。

2.    如果用户的手机当前不在线,google会把这个消息入队并存储这个消息。

3.    当用户手机在线时,google发送消息到手机。

4.    在手机端,系统使用适当的permission通过Intent broadcast把这个消息broadcast到特定的程序,然后特定的程序获得这个消息。这样就唤醒了这个程序。应用程序不需要提前运行来接收这个消息。

5.    程序处理这个消息。如果应用程序是做一个复杂的处理,你可能想获取屏幕唤醒锁并且在Service里做任何处理。

程序可以从C2DM解除注册,如果不想再收到消息。

 

Receiving a Message

手机上的程序收到消息时的步骤:

1.    系统收到消息,然后从消息中提取键值对。

2.    系统使用com.google.android.c2dm.intent.RECEIVE Intent把键值对传给目标程序。

3.    目标程序从RECEIVE Intent中根据key取得数据并处理数据。

 

用户看到什么?

当手机用户安装使用C2DM的程序时,他们会获得一个market通知的permission,告诉他们这个程序包含C2DM。他们必须批准使用此功能来安装程序。用户能不能选择解除注册,不接收消息,这取决于程序的实现。卸载程序也可以起到解除注册的效果。

分享到:
评论

相关推荐

    C2DM (Android Cloud to Device Messaging)

    Android Cloud to Device Messaging (C2DM) 是一种由谷歌提供的服务,用于支持开发者从服务器向运行Android操作系统的设备发送数据。C2DM旨在为应用程序提供一个简单、轻量级的通信机制,允许服务器通知客户端有新...

    SharePoint Enterprise Positioning and Messaging Framework FINAL

    SharePoint Enterprise Positioning and Messaging Framework FINAL

    android推送解决方案

    Android Cloud to Device Messaging (C2DM)是一个用来帮助开发者从服务器向 Android 应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制,允许服务器可以通知移动应用程序直接与服务器进行通信,以便于...

    Simple Messaging Framework-开源

    **简单消息框架(Simple Messaging Framework,SMF)**是一个开源项目,旨在简化并增强Web服务的创建过程。这个框架的设计理念是提供一个既健壮又灵活的解决方案,以支持开发者在构建应用程序时有效地暴露和利用复杂...

    Android2.1消息应用(Messaging)源码学习笔记.pdf

    Android 消息应用(Messaging)源码学习笔记 在 Android 操作系统中,应用程序(APK)是由多个组件构成的,包括 Activity、Service、Receiver 和 ContentProvider。其中,AndroidManifest.xml 文件是 APK 的打包...

    Android 4高级编程(第3版).pdf 高清

    解释了如何创建后台服务、通知和Cloud to Device Messaging;演示了如何创建动态的、交互式的主屏幕微件和Live Wallpaper;探索了硬件和通信API,包括蓝牙、电话、Wi-Fi Direct、NFC和Android Beam;讲解了摄像头和...

    Android代码-Odoo Messaging

    Odoo Mobile Client is Enterprise Social Client based on Android, enables you to access your Odoo Wall Messages from inbox and groups, encourage you to updated with companies' current activities for ...

    android-PushSharp

    PushSharp 是一个强大的服务器端库,专为开发者设计,用于向多种平台发送推送通知,包括 iOS 设备(iPhone 和 iPad 通过 APNs,Apple Push Notification service)、Android 设备(通过 C2DM 和 GCM,即 Cloud to ...

    Android 4高级编程(第3版).part1

    ◆ 解释了如何创建后台服务、通知和Cloud to Device Messaging ◆ 演示了如何创建动态的、交互式的主屏幕微件和Live Wallpaper ◆ 探索了硬件和通信API,包括蓝牙、电话、Wi-Fi Direct、 NFC和Android Beam ◆ 讲解...

    Android 4高级编程(第3版).part3

    ◆ 解释了如何创建后台服务、通知和Cloud to Device Messaging ◆ 演示了如何创建动态的、交互式的主屏幕微件和Live Wallpaper ◆ 探索了硬件和通信API,包括蓝牙、电话、Wi-Fi Direct、 NFC和Android Beam ◆ 讲解...

    Android 4高级编程(第3版).part2

    ◆ 解释了如何创建后台服务、通知和Cloud to Device Messaging ◆ 演示了如何创建动态的、交互式的主屏幕微件和Live Wallpaper ◆ 探索了硬件和通信API,包括蓝牙、电话、Wi-Fi Direct、 NFC和Android Beam ◆ 讲解...

    JAVA实现阿里百川-推送消息

    最近项目需要消息推送功能,由于 Android 谷歌官方的服务C2DM(Android Cloud to Device Messaging ) 由于'墙'的原因在国内不能正常使用,而且自己集成搭建自己的服务器代价相对比较大,而且,会出现一系列的问题。...

    php-firebase-cloud-messaging, 用于Firebase云消息传递的PHP API.zip

    php-firebase-cloud-messaging, 用于Firebase云消息传递的PHP API PHP Firebase云消息用于Firebase云消息传递的PHP API 。目前这个应用服务器库只支持通过HTTP发送消息/通知。请参阅原始Firebase文档:...

    Android基于mqtt消息推送通知指南

    Google 提供了 C2DM(Cloud to Device Messaging)服务,但它存在一些问题,如仅适用于 Android 2.2 及以上系统,需要依赖于 Google 官方提供的 C2DM 服务器,限制了其使用。 为了解决这些问题,我们需要自己实现 ...

    Professional Android 4 Application Development 源代码

    Introducing Cloud to Device Messaging Implementing Copy Protection Using the License Verification Library Introducing In-App Billing Using Wake Locks Using AIDL to Support Inter-Process Communication ...

    Google-Cloud-Messaging--Titanium-, 在 Titanium 中,Google云消息传递.zip

    Google-Cloud-Messaging--Titanium-, 在 Titanium 中,Google云消息传递 Google-Cloud-Messaging--Titanium -注册带有GCM和处理发送到设备的通知的Titanium MODULE 。Android平台使用c2dm进行推送,但是因为c2dm停止...

    Android 4高级编程(第3版)源代码

     ◆ 解释了如何创建后台服务、通知和Cloud to Device Messaging  ◆ 演示了如何创建动态的、交互式的主屏幕微件和Live  Wallpaper  ◆ 探索了硬件和通信API,包括蓝牙、电话、Wi-Fi Direct、  NFC和Android ...

    Spring Boot Messaging

    You will learn and integrate these messaging APIs with more complex enterprise and cloud applications: for example, you will see how to use Spring Cloud Stream for creating message-driven and cloud ...

    spring-messaging-4.3.12.RELEASE-API文档-中英对照版.zip

    标签:springframework、spring、messaging、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和...

Global site tag (gtag.js) - Google Analytics