目录

推送服务器手册

本文档介绍了推送服务器的Web接口的使用方法。

首先区分一下user channel和tag channel的概念:

user channel是以客户端唯一的uid作为channel的名称,客户端连接上来自动sub(sub表示加入channel) tag channel 是客户端主动通过sub命令加入的通道,比如客户端sub “location:beijing”,那么它就加入了”location:beijing”的通道,对”location:beijing”下发消息, 该客户端就会收到消息, 可以把tag channel想象成标签推送

Web接口的调用方法

开发者需要对Web接口以POST方法传递数据,Web接口将以JSON格式返回接口调用结果。

假如在服务器配置文件中配置了

[web]
bind localhost:8080

那么可使用如下的Linux命令调用接口或编程调用:

curl –X POST –d POST_DATA http://localhost:8080/METHOD_NAME

其中

POST_DATA 为POST的数据 METHOD_NAME 为需要调用的方法名

针对单一用户或者多个用户的推送(pub)

METHOD_NAME: pub POST_DATA:

            "expired": "1403521931",
             "appid": "XXX",
             "channel": "xxx@qq.com",
             "channel": "xxx@gmail.com",
             "data": "hello world"
             

通知栏消息预置模板

如使用SDK中预置的通知栏消息展现模板,则对于POST数据中 data 字段的格式要求,参照如下JSON串:

{ 
     "type":"notification", //通知栏类型
    "style":"1",                    //通知栏样式编号
    "config":{ 
        "icondata":"XXXXXXX",   //icon文件的BASE64编码
        "vibrate":"1",                     //是否震动:1 震动,0 不震动
        "sound":"1",                       //是否发出提示音:1有声音,0没声音
        "title":"XXXXXX",                //通知栏标题
        "ticker":"XXXXXXX",           //状态栏滚动信息
        "body":"XXXXXXX",           //消息内容
        "clickconfig":{                   //定义了用户点击后的行为,请见如下的例子
            "operation":"launchActivity", 
            "package":"com.wbkit.icclient", 
            "targetActivity":"com.wbkit.icclient.MainActivity" 
        } 
    } 
}

clickconfig的例子一:打开应用(Activity)

{
 “operation”:“launchActivity”,          //操作类型:打开Activity
 “package” : “com.example.demo”  //APK包名
 “targetActivity”: “com.example.demo.MainActivity”//Activity
}

clickconfig的例子二:下载APK并安装

{
 “operation”:“download”,       //操作类型:下载APK)
 “appname”: “捕鱼达人”             //APP 名字
 “dlurl”: “http://xxxxxx.apk”        //APK的url
  //PS:下载后自动弹出安装
}

clickconfig的例子三:打开页面

{
 “operation”:“loadWebpage”,      //操作类型:打开页面
  //PS: url和page二选一,如果都填了优先url
 “url”: “http://www.baidu.com”,     //url
 “page”: “.....”            //页面内容
}

透传消息预置模板

需要使用如下的格式确定data内容

{
 “type”:“transparent”, //透传类型
 “config”:“{
         	“content”:“XXXXXXX”,//透传消息内容
	         } ”
}

返回格式

        {
            "status":      "200",
            "pushedCount": 100,
            "offCount":    1,
            "elapsed":     0.52,
            "mid":         "489c4464de66000"
         }
         

针对指定的一个或多个TAG对应的用户进行推送(tagpub)

tagpub是专门针对tag channel下发的命令,也支持离线消息,但是离线消息会消耗多一些资源。如果只需要实时下发,请把expired设置为0。 METHOD_NAME: tagpub POST_DATA:

            "channel": "localtion:beijing",
             "channel": "location:guangzhou",
             "data": "hello world",
             "appid": "XXX",
             "expired": "1403521931"

返回格式:

         {
            "status":      "200",
            "pushedCount": 100,
            "elapsed":     0.52,
            "mid":         "489c4465de66000"
         }
         

各项意义同pub方法

针对某个APP的所有用户进行推送(allpub)

此方法将向appid下的所有在线用户或者全部用户下发,区别只下发在线用户或全部用户是通过expired来区分的,如果expired为0,那么就只对在线的用户下发,不保存离线消息。

METHOD_NAME: allpub POST_DATA:

             "appid": "XXX",
             "data": "hello world",
             "expired": "1403521931"<code>
             

返回格式:

        {
            "status":      "200",
            "pushedCount": 100,
            "elapsed":     0.52,
            "mid":         "489c4466de66000" 
         }
         

status说明:

将用户的uid加入标签组(sub-tag)

提供了一个接口可以把某一些用户的uid加入到某一tag channel下,此操作是幂等的。 METHOD_NAME:sub-tag POST_DATA:

             "appid": "XXX",
             "tag": "localtion:beijing",
             "uid": "xxx@qq.com",
             "uid": "xxxx@gmail.com" 

参数说明:

返回结果:

        {
            "status": "200"
         }
         

status说明

将一些用户从标签组中移除(unsub-tag)

METHOD_NAME: unsub-tag POST_DATA:

            "appid": "XXX",
             "tag": "localtion:beijing",
             "uid": "xxx@qq.com",
             "uid": "xxxx@gmail.com", 

参数说明

返回格式:

       {
            "status": "200" 
        }

status说明

推送任务信息查询(message)

METHOD_NAME: message POST_DATA:

        "mid": "489c4466de66000"          

返回格式:

        {
             "status":"200"
             "489c4466de66000": 
               {
                    "content":"hello world!",        
                    "expire":"1404378620",
                    "readCount":"0",
                    "recvdCount":"0",
                    "startTime":"1403407632",
                    "totalCount":"2",
                    "appid": "XXX"
                }
        }
        
 返回说明:

user channel 查询(userchannel)

METHOD_NAME: userchannel POST_DATA:

            "channel": "xxx@qq.com",
            "channel": "xxxx@gmail.com" 

返回:

     {
         "status": "200",
         "xxx@qq.com": 1, //此uid在线
         "xxxx@gmail.com": 0 //此uid不在线
      }
      

tag channel 查询(tagchannel)

METHOD_NAME: tagchannel POST_DATA:

            "channel": "location:Beijing",
            "channel": "location:Guangzhou"

返回:

     {
         "status": "200",
         "location:Beijing": 456, //当前在"location:Beijing"这个标签TAG下有456人,包括在线及不在线用户
         "location:Guangzhou": 23 //当前在"location:Beijing"这个标签TAG下有23人,包括在线及不在线用户
      }

APP 信息查询(app-size)

METHOD_NAME: app-size POST_DATA:

            "online": 1,
            "appid": "xxx",
            "appid": "yyy" 

返回格式:

    {
         "status": "200",
         "xxx": 1234, //appid为xxx的app目前在线(或总数)用户数为1234人
         "yyy": 567 //appid为yyy的app目前在线(或总数)用户数为567人
      }

其中返回的数字表示数量,具体含义依赖于调用时online方法的值。