GCM学习笔记

服务器端

相关服务器

有两部分:
1.GCM connection servers 是由google提供的,它们将来自app server的消息转发的客户端,支持http和xmpp协议
2.application server 就是1中提到的app server

对一个app server有以下要求:
1.可以和客户端通信
2.可以发送格式化的request到GCM connection server
3.使用指数退避处理请求以及重发
4.安全存储API key &client registration tokens
5.XMPP服务器必须可以产生唯一消息ID
6.如果要有上行消息,则必须用xmpp

GCM的协议取舍,XMPP和HTTP的差异:
1.上下行消息
HTTP仅下行,4kb限制
XMPP上下行都支持,4kb限制
2.消息发送
HTTP 同步,使用http post并等待结果,消息必须依次发送
XMPP 异步,ack或者失败通知也是异步的
3.JSON
HTTP 使用http post发送
XMPP 使用xmpp消息封装
4.纯文本
HTTP 使用http post
XMPP 不支持
5.多点下行传播
HTTP 以json格式支持
XMPP 不支持

客户端

前提

1.Android2.2+,并且安装了Google Play
2.基于Google Play的新功能要求Android 2.3+
3.pre-3.0要求有google账户,4.0.4以后则不要求

简单来说

register+receiver

register用来注册获取
tokenreceiver用来接收GCM发出的消息

判断GooglePlay版本

API:GoogleApiClient
callback:OnConnectionFailedListener
错误码:SERVICE_MISSING, SERVICE_VERSION_UPDATE_REQUIRED, or SERVICE_DISABLED
API:GooglePlayServicesUtil.isGooglePlayServicesAvailable()
返回值: SUCCESS, SERVICE_MISSING...getErrorDialog()让用户更新GP

客户端的注册流程

Canonical IDs

如果客户端注册了多次,那么就会导致重复的收到消息,使用Canonical ID能解决这个问题,当你使用一个就的token发送消息给服务器,GCM依旧会提供服务,但同时在返回字段registration_id中带上这个Canonical ID,因为有时候GCM对旧的token也会不给力,所以确保用这个Canonical ID替换掉旧的

反注册和停止订阅消息

1.deleteToken 停止指定app server的消息推送
2.deleteID 停止所有app server的消息推送
3.unsubscribe 不订阅某主题
注意:
1.不要随便call这些,登出或切换用不要反注册,因为第一token与登录用户无关,第二反注册再重新注册需要5分钟,这期间消息可能会被拒绝或者发送给错误的用户
2.如何保证消息推送到对的用户,可以建立map(user,token),可以加check来保证收到的消息是给当前登录的用户的

卸载App默认会自动反注册的工作过程

1.用户卸载
2.app server发送消息给GCM server
3.GCM发送消息给该设备的GCM客户端
4.GCM客户端收到并检测到确实已卸载
5.GCM客户端通知GCM server客户端确已卸载
6.GCM server mark这个token为删除
7.app server发送消息给GCM Server
8.GCM返回NotRegistered错误
9.app server删除此token

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,848评论 25 707
  • 前言:在13年11月中旬时,因为基础组件组人手紧张,Leo安排我和春哥去广州轮岗支援。刚到广州的时候,Ray让我和...
    自然心情阅读 18,935评论 2 43
  • 【回顾篇】上一章的最后是这样写的: “加翼你他妈是个混蛋!” 混蛋! ... ... 我能感觉到,我意识的流动。 ...
    陆大总监阅读 21,080评论 10 131
  • 你觉得很多人素质不高,很可能,人家只是不想在你面前修养良好。
    思莫阅读 200评论 0 0