基 于 Android 的手机是面向移动互联网的手机,保持24小时在线才能充分发挥它的全部能量。而 Google 也在不断提供各式各样的网络服务来吸引用户,有的服务是直接面向终端用户,而有的服务是面向开发者,期望开发者可以利用 Google 提供的这些服务来制作新形态的 Apps 和创造新的服务类型,当然 Google 也会从自家的服务被更多用户访问来获得收益。

Google I/O 2010 介绍了 Android 2.2 导入的 Android Cloud to Device Messaging (C2DM) 服务,也演示了在PC端,把浏览器正在浏览的网址或者在 Google Maps 上定位的位置发到 Android 手机上,而手机会直接通过浏览器打开该网址或者通过地图软件定位该位置。

前不久 Chrome to Phone 已经正式发布,可以让 Android 用户在自家的 PC 和 手机上亲自使用该功能。而 Chrome to Phone 的作者 也发表了一篇技术文章,介绍了C2DM 服务的一些细节。

翻译正文:

Android Cloud to Device Messaging (C2DM) 作为 Android 2.2 的一部分已经发布了。C2DM 允许第三方开发者开发相关的应用来推送少量数据消息到用户的手机上。C2DM 创造了一个良好的机会,允许我们使用多种 Google 开发工具来创建一种简单但相当实用的应用类型。用户可以使用该类型的应用把各种各样的信息从他们的台机或者笔电直接 push 到自家的手机上。来自 Google 20% 工作时间的一个实验性项目 Chrome to Phone 演示了这种类型的应用。

Chrome to Phone 包括了一个 Chrome Extension,一个 Android Application,和一个 Google AppEngine 服务器。所有的代码都是开源的,可供其它开发者参考如何使用 C2DM。

Chrome to Phone 的消息流是一个很典型的推送服务:

用户使用 Android App 在 C2DM 服务器上注册,获得一个设备注册 ID,这个 ID 跟用户的 Google 帐号绑定在一起,并且由 AppEngine server 来维护。 AppEngine server 在验证用户账号的合法性后记录下用户账号跟用户 C2DM 设备注册 ID 之间的映射关系。

Chrome Extension 获得浏览器当前访问的网址和标题后,把它们发送到 AppEngine server。 AppEngine server 验证当前登录的 Google 用户账号后,通过该账号查找到对应的 C2DM 设备注册 ID。然后通过 HTTP 把 URL 和标题发送到 Google 的C2DM 服务器。用户手机上的Android 系统(2.2 以上版本)会一直监听来自 C2DM 服务器的推送消息,当 C2DM 服务器接收到 AppEngine server 发送过来的消息,并且这个消息是发送到用户手机所绑定的 C2DM 设备注册ID 时,就会发送给用户手机,而手机上 Android 系统收到消息后则会发起一个 Intent broadcast(意图广播),接着跟该 Intent 对应的 Android App 被激活,再把这个 Intent 转换成相应的新 Intent 并路由到其它 Apps 上面去(比如浏览器,拨号软件,地图软件等)。

(路由路径:"Chrome to Phone" Chrome Extension(PC)-> "Chrome to Phone" AppEngine server -> C2DM server -> Android OS(Mobile) -> "Chrome to Phone" Android App -> Android Browser)

"Chrome to Phone" Chrome Extension
这里一个有趣的设计是像 URL 和标题这样轻量级的数据会附随在推送消息上,直接从 C2DM 服务器发送到手机上。URL 会使用hash编码产生一个 collapse_key 来防止重复发送。另外一个可选的方式是(也更适用于数据量较大的情况),服务器只发送简单的推送消息来激活手机上的 App,然后 App 再访问服务器获得额外的数据。

Chrome to Phone 的代码可以在网上找到。 AppEngine 和 Android App 代码都包括了一个可重用的包 com.google.android.c2dm 用于处理底层的 C2DM 交互事务 (例如配置,任务队列管理等)。

Chrome to Phone 提供了有用的功能,不过它最有趣的地方是在于提供了如何使用 Android C2DM 服务的示例。

原文转载自 沃达网: http://www.opda.cn/2010/08/19/how-to-use-android-cloud-to-device-messaging-service/#ixzz11keARIve

转载于:https://www.cnblogs.com/afilover/archive/2010/10/08/1845894.html

Android Cloud to Device Messaging 服务介绍 – 如何使用云计算推送消息到手机(转载)...相关推荐

  1. 极光推送android点击跳转页面,app关闭时点击推送消息实现页面跳转

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: ...

  2. 如何实现服务器给android客户端主动推送消息

    一.消息推送基础 消息推送,就是在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术.推送技术通过自动传送信息给用户,来减少用于网络上搜索的时间.它根据用户的兴趣来搜索.过滤信息,并将其定期 ...

  3. android 动态推送权限,提升Android推送消息到达率方法介绍!

    推送消息的到达率除了用户终端的网络信号影响之外,有很大一部分是系统屏蔽原因造成的,我们经常提的一个词"app保活"其实就是为了提升推送消息的到达率,但是及时给app做了保活仍然会被 ...

  4. android自定义push通知_20个海外Web和App推送通知服务工具

    在App和网站中使用推送通知有不同的原因,并且在提高流量和与客户互动方面有很多好处.推送通知是一种交互式可点击消息,可将访问者直接引导至你的网站.它们可以帮助你以指数方式增加流量和参与率.因此,营销人 ...

  5. android推送服务不被关闭,Android APP被关闭后无法收到推送消息(尝试)

    1.   Android端进程被杀死后,目前自带的保护后台接收消息活跃机制.暂时没有什么好的机制保持任何情况下都活跃 文章参考:http://blog.csdn.net/marswin89/artic ...

  6. android点击通知跳转到服务,Android 接收推送消息跳转到指定页面的方法

    问题的提出 本次接入的是个推,其他家的推送没有研究过,思路应该是类似的 App在前台,这个时候需要弹出一个对话框,提醒用户有新的消息,是否要查看,查看的话跳转到指定页面 App在后台,或是App进程已 ...

  7. 服务端是如何主动推送信息到客户端的?

    from:http://zhangtielei.com/posts/blog-android-push.html 说Android端外推送比较烦,实际有两层意思:首先是说实现上比较麻烦,至今业界也没有 ...

  8. Android端推送消息之极光推送

    推送方式 轮询 --实现方式: 周期性主动获取网络中的数据; --缺点: 费电, 费流量; SMS --实现方式: 服务器端向手机端发送短信, 手机监听短信广播, 将拦截的短信信息进行显示; --优点 ...

  9. 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)

    这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送 ...

最新文章

  1. Advantages of genome sequencing by long-read sequencer using SMRT technology in medical area
  2. 用aspx开发html5页面,ASP.NET使aspx页面能接受HTML,asp的页面传送的文件-.NET教程,Asp.Net开发...
  3. DBCA建库找不到ASM磁盘一例
  4. HDU-3622 Bomb Game 2sat
  5. virtualBox 不通主机
  6. zstack 第一个例子
  7. 每个Power BI开发人员的Power Query提示
  8. 13.卷2(进程间通信)---Posix共享内存区
  9. No package ‘libmarco-private‘ found
  10. QQ IP 地址查询相关
  11. linux下编译libyuv,Android ndk cmake编译libyuv
  12. 计算机实战项目之 [含论文+任务书+中期检查表+答辩PPT+源码等]基于javaweb宠物领养网站
  13. 走楼梯c语言程序,C语言项目爬楼梯的两种实现方法参考
  14. 【B站】陈睿:令人刮目相看的年轻一代
  15. 多商户JAVA扫码点餐小程序源码SaaS模式
  16. Keepalived配置报错Unicast peers are not supported in strict mode
  17. webpack 深入浅出分析之打包 JS、ES6 和 Typescript
  18. CAD的DXF解析中LWPOLYLINE多线段凸度的相关概念和弧度转换
  19. Flutter-解决Try catch出现异常:type ‘_TypeError‘ is not a subtype of type ‘Exception‘ in type cast
  20. 人一生必看的100部电影(全球最佳电影排名榜TOP250)

热门文章

  1. c++ 海战棋_编程入门须知:都说零基础不好学编程,那么什么是编程基础?
  2. 关于easyui combobox下拉框实现多选框的实现
  3. vue快速复制快捷键_vue快捷键与基础指令详解
  4. C++ 偏微分数值计算库_ESYSim仿真器介绍之一 C++库介绍
  5. 运筹优化(十六)--排队论基础及其最优化求解
  6. 运动目标跟踪(十四)--MIL跟踪
  7. SpringBoot+Swagger2
  8. 嵌入式系统——文件系统
  9. 指针变量的所占字节数大小确定
  10. ajax注册判断怎么写,ajax之判断用户名是否被注册