Cobub Razor
Cobub Toaster
其它链接
本文档介绍了推送服务器的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接口以POST方法传递数据,Web接口将以JSON格式返回接口调用结果。
假如在服务器配置文件中配置了
[web] bind localhost:8080
那么可使用如下的Linux命令调用接口或编程调用:
curl –X POST –d POST_DATA http://localhost:8080/METHOD_NAME
其中
POST_DATA 为POST的数据 METHOD_NAME 为需要调用的方法名
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" }
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方法
此方法将向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加入到某一tag channel下,此操作是幂等的。 METHOD_NAME:sub-tag POST_DATA:
"appid": "XXX", "tag": "localtion:beijing", "uid": "xxx@qq.com", "uid": "xxxx@gmail.com"
参数说明:
返回结果:
{ "status": "200" }
status说明
METHOD_NAME: unsub-tag POST_DATA:
"appid": "XXX", "tag": "localtion:beijing", "uid": "xxx@qq.com", "uid": "xxxx@gmail.com",
参数说明
返回格式:
{ "status": "200" }
status说明
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" } }
返回说明:
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不在线 }
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人,包括在线及不在线用户 }
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方法的值。