GCM 介绍
GCM有以下特点:
可以使用第三方应用服务器向Android应用推送消息
GCM不保证发送的消息的顺序,也不保证消息一定能够推送到手机(恩,谁也不能保证100%)
Android应用不需要运行就可以接收消息(是的,你没有看错,因为gcm被集成到系统中了,目前一些第三方的推送是在后台运行一个service维持长连接,与这些第三方推送相比,GCM不额外的耗电)
GCM只传递的数据(可以传递小于4kb的数据),对这些数据的处理可以全部由开发者控制(Google不对数据进行任何处理,仅仅转发一下而已)
对于Android4.04以上的系统使用GCM没有任何限制(国行手机也可以使用,截止2013年02月04日,android4.0+的份额为42.6%,随着4.0+版本的提升,Android的推送不再成为一个问题Android版本分布),Android2.2以上的系统需要安装GooglePlayStore,Android2.2以下的系统不能够使用GCM
对于Android3.0以前的系统,需要在设备上设置google账号
gcm一次最多只能向1000部设备发送消息,没有提供向所有用户发送的接口(可能google认为向应用程序推送的消息都是与该用户相关的,如果你非要实现群发,一次发送1000个用户,多发送几次就行了)
App是运行在Android手机上的应用程序,GCMServer是Google的GCM服务器,OurServer是第三方应用服务器。具体流程如下:
App发送SenderID到GCMServer注册接收推送信息(SendID是开发者在Google的网站开通GCM服务时,创建项目的项目号)。
GCMServer向App返回RegId(RegId是GCM服务器通过一定算法生产的,可以唯一确定某一部手机上的某一个应用,这个RegId很重要)。
App向OurServer发送RegId(推送消息的时候要使用RegId,GCM服务器是使用RegId来确定某一部手机上的某一个应用接收消息的,所以第三方服务器需要保存它,需要注意的是RegId很长,比如可能有183位,存数据库时需要注意字段长度)
OurServer向GCMServer发送消息,传递appkey和RegId(appkey分为Oauthapikey和simpleapikey)
GCMServer把消息推送给App
SIMPLEAPIKEY和OAUTHAPIKEY只能使用其中一个。不能同时使用。
消息在googleserver最长保留4个星期。这个时间可发送时自定义。
GCM经常收不到消息,让人抓狂。
msgcnt:消息的条数提示。在消息栏右下脚显示
message:消息内容
title:消息标题
如果不设置message参数,则不会弹出推送消息。(有title和msgcnt也没用)
開機後,GCMSERVICE默認自動開啟。如果禁止了就無法收到消息了。
國內有些設備沒有安裝GCMSERVICE和GOOGLEPLAYSTORE,即使手動安裝了,也可能不能用的。因此無法使用GCM。