Android推送技术总结

Android平台接入推送机制一般有两种,一种是Google官方提供的C2DM云端推送方案;另外一种是第三方,如极光、个推和友盟等推送平台。

  1. C2DM云端推送方案

1)简单介绍

在Android手机平台上,Google提供了C2DM(Cloudto Device Messaging)服务。Android Cloud to Device Messaging (C2DM) 作为 Android 2.2 的一部分已经发布了。C2DM 允许第三方开发者开发相关的应用来推送少量数据消息(1024bytes)到用户的手机上。C2DM 创造了一个良好的机会,允许我们使用多种 Google 开发工具来创建一种简单但相当实用的应用类型。用户可以使用该类型的应用把各种各样的信息从他们的PC端直接 push 到自家的手机上。

2)使用条件

(1)需要Android2.2及以上的系统版本。

(2)使用C2DM功能的Android设备上需要设置好Google的账户。

(3)需要在这里注册使用C2DM功能的用户邮箱账号(最好为C2DM单独注册一个Gmail邮箱账号)

  1. 流程

流程图如下:

(1)Android设备把使用C2DM功能的用户账户和App名称发送给C2DM服务器。

(2)C2DM服务器会返回一个registration_id值给Android设备,设备需要保存这个registration_id值。

(3)Android设备把获得的registration_id和C2DM功能的用户账户发送给自己的服务器,不过一般用户账户信息因为和服务器确定好的,所以不必发送。这样Android设备就完成了C2DM功能的注册过程,接下来就可以接收C2DM服务器Push过来的消息了。

(4)服务器获得数据。这里图中的例子Chrome To Phone,服务器接收到Chrome浏览器发送的数据。数据也可以是服务器本地产生的。这里的服务器是Google AppEngine(很好的一项服务,可惜在国内被屏了),要换成自己的服务器。服务器还要获取注册使用C2DM功能的用户账户的ClientLogin权限Auth。

(5)服务器把要发送的数据和registration_id一起,并且头部带上获取的Auth,使用POST的方式发送给C2DM服务器。

(6)C2DM服务器会以Push的方式把数据发送给对应的Android设备,Android设备只要在程序中按之前和服务器商量好的格式从对应的key中获取数据即可。[2-3]

  1. 缺陷

C2DM需要依赖于Google官方提供的C2DM服务器,由于该服务器在国内被屏蔽,这个服务经常不可用。

  1. 接入第三方sdk方案

1)简单介绍

目前国内、国外有一些推送平台可供使用,例如极光、个推和友盟等。一般以jar包的方式出现,集成在客户端。以下以个推为例做简单说明。

2)推送过程解析

个推服务器一侧负责维护与成千上万的个推SDK的长连接,另一侧与第三方服务器对接,将第三方定制数据下行推送至个推SDK。应用服务器是数据推送的发起者,通过对接个推服务器,推送平台服务器获取到数据并解析,并把结果透传给客户端。客户端集成个推sdk唤醒,客户端接收到推送数据后做出相应处理。

  1. 流程

流程图如下:

(1)客户端集成个推SDK,添加配置权限和注册信息。

(2)客户端启动的时候,调用SDK接口,启动推送服务,SDK后台运行并维护和个推服务端的长连接,实现SDK注册和登录。

(3)应用服务端调用个推服务器的接口,将要发送的数据通过个推服务器发送到指定身份的个推SDK当中。

(4)个推SDK接收并解析定制数据,并且将消息透传给客户端,客户端根据服务器的数据做出相应的动作或者展现。

  1. 缺陷

市面上很多管理软件,如百度管家、手机管家、360安全卫士等,往往将接收推送的权限和自启动权限禁止了。另外,手机系统设置中也是存在这种禁止权限的开关,比如华为、小米、中兴等深度定制的手机,在安装接入推送的sdk的应用APP时,会默认关闭以上权限。这样,用户就会出现接收不到推送或延迟接收推送的情况。

参考文献:

http://mobile.51cto.com/aprogram-433822.htm

http://ju.outofmemory.cn/entry/93901

http://www.cnblogs.com/manuosex/p/3660727.html

Android推送技术总结相关推荐

  1. Android推送技术研究

    前言 最近研究Android推送的实现, 研究了两天一夜, 有了一点收获, 写下来既为了分享, 也为了吐槽. 需要说明的是有些东西偏底层硬件和通信行业, 我对这些一窍不通, 只能说说自己的理解. 为什 ...

  2. Agora-SDK-在Android中的使用(在线视频通话),Android推送技术解析

    |-src |-main |-AndroidManifest.xml |-java |-io |-agora |-tutorials1v1vcall |-VideoChatViewActivity.j ...

  3. 腾讯T3亲自教你!Android推送技术解析,写给正在求职的安卓开发

    前言 开发10年,老码农,曾经是爱奇艺架构师,东芝集团高级工程师,三星架构师.5年之内频繁被辞退.内心拔凉拔凉的,在这五年理我思考了很多,也意识到了自己的不足.今年趁着疫情把自己知识的不足做了个查漏补 ...

  4. Android推送、智能心跳解决方案、手机休眠对心跳的影响

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51611625 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  5. Android推送 智能心跳解决方案 手机休眠对心跳的影响

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51611625   文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一 ...

  6. Android_推送技术研究

    前言 最近研究Android推送的实现, 研究了两天一夜, 有了一点收获, 写下来既为了分享, 也为了吐槽. 需要说明的是有些东西偏底层硬件和通信行业, 我对这些一窍不通, 只能说说自己的理解. 为什 ...

  7. Android 服务器推送技术

    在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相 ...

  8. 看了极光推送技术原理的几点思考

    看了极光推送技术原理的几点思考 分类: android2012-11-26 20:50 16586人阅读 评论(18) 收藏 举报 目录(?)[+] 移动互联网应用现状 因为手机平台本身.电量.网络流 ...

  9. 个推无法获取个推id_最新个推Android 推送 SDK Maven 集成

    概述 公司准备采用个推作为第三方推送平台,我作为客户端的头号小鸟,掐指一算已经毕业 0.1 年了,Leader 准备把这个简单而又独立的功能点交给我来处理,我紧张兮兮的打开官网集成文档 学习了起来.其 ...

最新文章

  1. 牛客网练习赛44-B(快速幂+模拟)
  2. 华为Mate 30系列发布:电影级4摄,麒麟990 5G,没谷歌全家桶,售价高于iPhone11
  3. 汇总运行在Hadoop YARN上的开源系统
  4. android Fragments详解
  5. SAP Cloud for Customer图片渲染逻辑的调试
  6. 第七周作业——简单FTP
  7. sql 不等于符号_SQL 必备知识 - 第一弹
  8. Oracle中索引位图转换的优势
  9. 【09】Jenkins:Pipeline 补充
  10. Skyline Web 二次开发- 1.地图显示、Position、AttachEvent
  11. 在线加密视频一机一码播放器
  12. 数学建模论文写作方法大总结
  13. 中国贻贝养殖种类、养殖面积、养殖产量和进出口量分析「图」
  14. 基于Pygame的中国象棋的制作(China Chess)
  15. 开源微商城 特惠端午节
  16. 三种等待方式:强制等待、显式等待、隐式等待
  17. mongodb的java驱动_MongoDB的java版本驱动
  18. 三星 SGH-I900/I908修改生产日期
  19. 特斯拉新能源汽车遍地开花 汽车品牌纷纷建立电动化品牌战略
  20. html5页面打不开原因,部分网页打不开是什么原因,详细教您网页打不开怎么解决...

热门文章

  1. 如何知道 win10 的激活到期时间和期限等
  2. 云服务器安装软件,如何在云服务器中安装软件
  3. odoo 销售订单自动生成制造订单
  4. Nickel 28就青山控股集团镍锍生产计划发表评论
  5. 82个加密数字货币遭交易所下线,全球区块链ICO代币进入强监管
  6. 记一次某公众号平台前端加密算法的解密
  7. 【Coding】Latex添加表格注释footnote
  8. Linux桌面GUI系统的调度器应该怎么做才不卡顿呢?
  9. org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locke
  10. 代码版刘畊宏本草纲目健身操【内附源码/demo】