美文网首页
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学习笔记

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