wiki:AndroidPushInterface2

Android推送服务接口设计2

设计目标

目标范围约束开发时间
消息群发
(或单点)
sdk
server
魔方




TPS>1W
单台机5分钟300万次的响应能力



4周以内
预计10月底完成

接口地址:

    http://apns.imofan.com/pull/{dev_id}/{app_id}/{ts}/{md5}

接口请求参数定义:

参数名说明
app_id应用的唯一标识id的列表,由魔方系统生成
ts时间戳((time - 1325347200000L) / 1000)
dev_id设备的唯一标识
md5校验码 ( md5 = ts % app_id)

报文约定

请求报文:无

响应报文JSON格式定义:

  {
       "messages": [
        {
            "msg_id": 3516,
            "app_id": "1",
            "app_ver": ">=320",
            "os_ver": "<2.2",
            "content":"好消息...Android客户端已经可以推送消息了!",
            "ts":201210101156,
            "lang":"en"
        },
        {
            "msg_id": 3517,
            "app_id": "2",
            "app_ver": ">=320",
            "os_ver": "<2.2",
            "content":"解放军已经实际控制钓鱼岛",
            "ts":201210101157,
             "lang":"cn"
        },
       {
            "msg_id": 3518,
            "app_id": "2",
            "app_ver": ">=320",
            "os_ver": "<2.2",
            "content":"解放军已经实际控制钓鱼岛",
            "ts":201210101157,
            "lang":"all"
        },
        ...
    ]
  }

响应报文定义说明:

返回值说明
messages消息列表
msg_id消息id
app_id消息针对的应用appId
app_ver消息针对的应用版本,可用>320、>=320、=320、<=320、<320五种形式,其中320为Android应用version code,必须是整数值
os_ver消息针对的操作系统版本,可为>2.0、>=2.1、=3.0、<=4.0、<4.1五种形式,其中比较符后面的数字只能是两段式格式,不做更细的划分
content消息正文
ts消息的时间戳
lang语言(中文/英文/全部)

服务端设计思路: 使用netty提供服务,根据请求报文中的app_key以及时间戳来决定返回的消息。