美文网首页
GCM学习笔记

GCM学习笔记

作者: hiLily | 来源:发表于2016-05-04 18:28 被阅读806次

服务器端

相关服务器

有两部分:
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

相关文章

  • GCM学习笔记

    服务器端 相关服务器 有两部分:1.GCM connection servers 是由google提供的,它们将来...

  • 【Android】GCM restricted_package_

    前言 在做GCM推送的时候,遇到GCM Server返回“Invalid Package Name”的错误信...

  • FCM迷之多个key

    第一坑:   在GCM的控制台创建新项目,打开GCM服务,找出app key,请服务器同事帮忙配置  app接入后...

  • AES-GCM加密算法

    以太坊Whisper协议中,默认的对称加密使用的是AES-GCM加密算法。1.AES的介绍2.GCM的介绍

  • Android GCM初见

    GCM:GCM是谷歌官方推出的消息推送机制,隶属于Firebase下,用于解决应用程序退出后不能接收到信息通知的问...

  • GCM迁移到FCM

    2019年4月11日,Google将停用GCM服务器和客户端的API,因此需在此之前将GCM迁移到FCM。 迁移分...

  • 利用GCMforMojo实现类似ios的云推送

    本人用的是小米手机就近原则选择的是mipush,毕竟gcm被墙了。 1.前期准备 服务器一台 (需要gcm推送的需...

  • Handling GCM messages in the for

    https://markhudnall.com/2013/11/13/gcm-foreground-and-bac...

  • GCM推送测试

    array( $reg_id), 'data' => $message, ); $headers = ...

  • FCM(GCM) 测试报告

    FCM 前身是 GCM ---- Google Cloud Messaging,Google 在推出 Fireba...

网友评论

      本文标题:GCM学习笔记

      本文链接:https://www.haomeiwen.com/subject/pgorrttx.html