集成推送平台接口说明 API 接口规范 接口响应规范 HTTP 接口遵循魅族 API 协议规范 返回数据格式统一如下 : code :, // 必选, 返回码 message :, // 可选, 返回消息, 网页端接口出现错误时使用此消息展示给用户, 手机端可忽略此消息, 甚至服务端不传输此消息 value :,// 必选, 返回结果 Api returncode 定义 code value 200 正常 500 其他异常 1001 系统错误 1003 服务器忙 1005 参数错误, 请参考 API 文档 1006 签名认证失败 110000 appid 不合法 110001 appkey 不合法 110004 参数不能为空 110010 应用推送速率过快 110053 透传超过限制 接口签名规范 请求参数分别是 k1 k2 k3, 它们的值分别是 v1 v2 v3, 计算方法如下所示 : 1. 将参数以其参数名的字典序升序进行排序, 如对 k1 k2 k3 排序 2. 遍历排序后的字典, 将所有参数按 "key=value" 格式拼接在一起, 如 k1=v1k2=v2k3=v3 3. 在拼接好的字符串末尾追加上应用的 Secret Key 1/13
上述字符串的 MD5 值即为签名的值 (32 位小写 ) 将签名值放在请求的参数中例如 sign=md5_sign 服务端 SDK 调用 API 的应用的私钥 Secret Key 为 appsecret /** * @param parammap 请求参数 * @param secret 密钥 * @return md5 摘要 */ public static String getsignature(map<string, String> parammap, String secret) // 先将参数以其参数名的字典序升序进行排序 Map<String, String> sortedparams = new TreeMap<String, String> (parammap); Set<Entry<String, String>> entrys = sortedparams.entryset(); // 遍历排序后的字典, 将所有参数按 "key=value" 格式拼接在一起 StringBuilder basestring = new StringBuilder(); for (Entry<String, String> param : entrys) basestring.append(param.getkey()).append("=").append(param.getvalue()); basestring.append(secret); logger.debug("basestring is:", new Object[]basestring.toString()); // 使用 MD5 对待签名串求签 return MD5Util.MD5Encode(basestring.toString(),"UTF-8"); // 示例, 注意是针对接口中所有参数做签名, 并且是原始字符串 ( 非 urlencode) public static void main(string[] args) // 本示例为三个参数 appid pushids messagejson Map<String, String> parammap = new HashMap<String, String>(); parammap.put("appid", "10000"); parammap.put("pushids", "RA50c6348036344485d01776773577c64740465480a6b"); parammap.put("messagejson", " \"title\":\"title\",\"content\":\"content\",\"pushtimeinfo\": \"offline\":1,\"validtime\":24"); String sign = SignUtils.getSignature(paramMap, "<APP_SECRET>"); //MD5 原始字符串为 appid=10000messagejson="title": "title","content": "content","pushtimeinfo": "offline": 1,"validTime": 24pushIds=RA50c6348036344485d01776773577c64740465480a6b<APP_SECRET> //MD5 摘要 sign 为 ac076ff25d9900015a681cb5172aa53b 2/13
接口请求示例 POST http://server-apimzups.meizu.com/garcia/api/server/push/unvarnished/pushbyalias HTTP/1.1 Host: server-api-push.meizu.com Connection: keep-alive Content-Length: 226 Cache-Control: no-cache Content-Type: application/x-www-form-urlencoded Accept: */* Accept-Encoding: gzip, deflate Accept-Language: zh-cn,zh;q=0.8 alias=xxx&appid=xxx&messagejson=%7b%22title%22%3a%22title%22%2c%22content%22%3 A%22hello+test%22%2C%22pushTimeInfo%22%3A%7B%22offLine%22%3A1%2C%22validTime%2 2%3A24%7D%7D&sign=a68b75e5d5b30e35536f130cf1cae14a HTTP/1.1 200 OK Server: nginx Date: Wed, 28 Dec 2016 03:34:53 GMT Content-Type: application/json; charset=utf-8 Content-Length: 87 Connection: keep-alive Content-Language: zh-cn Set-Cookie: JSESSIONID=1wl3nhcfqroiicj6pvxwdvjx6;Path=/ Expires: Thu, 01 Jan 1970 00:00:00 GMT "value": "msgid": "UPSDEV20171123143026239_100000002", "resptarget": "110003": [ "pushid" ] API 说明 前言 消息推送结果接口响应部分 value 是 map 集合的 json 格式且只返回推送非法的 pushid, 合法的 pushid 不予返回, 一般情况下,pushId 未注册则视为非法 3/13
map 部分 code 定义 code value 110002 pushid 效 110003 pushid 非法 110005 alias 效 注 : 平台使用 pushid 来标识每个独立的用户, 每一台终端上每一个 app 拥有一个独立的 pushid 客户端说明 客户端消息自定义行为 推送 API pushid 推送 ( 透传消息 ) 内容 接口功能 pushid 推送 ( 透传 ) 请求方法请求路径请求 HOST 请求头备注请求内容 Post /ups/api/server/push/unvarnished/pushbypushid server-api-mzups.meizu.com Content-Type:application/x-www-form-urlencoded;charset=UTF-8 签名参数 sign=md5_sign 响应码 200 响应头 请求参数 参数 appid pushids sign messagejson 按 POST 提交表单的标准, 你的任何值字符串是需要 urlencode 编码的 推送应用 ID 必填 推送设备, 一批最多不能超过 1000 个多个英文逗号分割必填 签名必填 Json 格式, 具体如下必填 "content": 推送内容, string 必填, 字数限制 2000 以内 4/13
"pushtimeinfo": "offline": 是否进离线消息 0 否 1 是 [validtime] int 非必填, 默认值为 1 "validtime": 有效时长 (1-72 小时内的正整数 ) int offline 值为 1 时, 必填, 默认 24 响应内容 成功情况 : "value": "msgid": "UPSDEV20171204155029658_100000000", "resptarget":, // cp log "logs": "1": "msgid:ns20171204155029599_0_11168408", "2": "msgid:sdm15b455123738301602t", "3": "requestid:151237383037157123121" 失败情况 "value": "msgid": "UPSDEV20171123143026239_100000002", "resptarget": "110003": [ "flyme" ] 超速情况 "code": "110010", "message": " 应用请求频率超过限制 ", 5/13
"value": "" pushid 推送 ( 通知栏 ) 内容 接口功能根据 pushid 推送 ( 通知栏 ) 请求方法请求路径请求 HOST 请求头备注请求内容 Post /ups/api/server/push/varnished/pushbypushid server-api-mzups.meizu.com Content-Type:application/x-www-form-urlencoded;charset=UTF-8 签名参数 sign=md5_sign 响应码 200 响应头 请求参数 参数 appid pushids sign messagejson 按 POST 提交表单的标准, 你的任何值字符串是需要 urlencode 编码的 推送应用 ID 必填 推送设备, 一批最多不能超过 1000 个多个英文逗号分割必填 签名必填 Json 格式, 具体如下必填 "noticebarinfo": "title": 推送标题, string 必填, 字数限制 1~32 字符 "content": 推送内容, string 必填, 字数限制 1~100 字符, // 参考客户端参数定义说明 "clicktypeinfo": "clicktype": 点击动作 (0," 打开应用 "),(1," 打开应用页面 "),(2," 打开 URI 页面 "), (3, " 应用客户端自定义 "),(4, " 打开自定 Intent URI"); int 非必填, 默认为 0 "url": URI 页面地址, clicktype=2, 必填 "parameters": 参数 JSON 格式 非必填 "activity": 应用页面地址应用页面地址 clicktype=1, 必填格式 pkg.activity eg: com.meizu.upspushdemo.testactivity "customattribute": 应用客户端自定义 clicktype=3, 必填 "customuri": 打开自定 Intent URI clicktype=4, 必填 eg:upspushscheme://com.meizu.upspush/notify_detail?title=ups title&content=ups 6/13
content, "pushtimeinfo": "offline": 是否进离线消息 (0 否 1 是 [validtime]) int 非必填, 默认值为 1 "validtime": 有效时长 (1 到 72 小时内的正整数 ) int offline 值为 1 时, 必填, 默认 24, "advanceinfo": "suspend": 是否通知栏悬浮窗显示 (1 显示 0 不显示 ) int 非必填, 默认 1 "clearnoticebar": 是否可清除通知栏 (1 可以 0 不可以 ) int 非必填, 默认 1 "notificationtype": "vibrate": 震动 (0 关闭 1 开启 ), int 非必填, 默认 1 "lights": 闪光 (0 关闭 1 开启 ), int 非必填, 默认 1 "sound": 声音 (0 关闭 1 开启 ), int 非必填, 默认 1 响应内容 成功情况 : "value": "msgid": "UPSDEV20171204155029658_100000000", "resptarget":, // cp log "logs": "1": "msgid:ns20171204155029599_0_11168408", "2": "msgid:sdm15b455123738301602t", "3": "requestid:151237383037157123121" 失败情况 "value": "msgid": "UPSDEV20171123143026239_100000002", "resptarget": "110003": [ "flyme" 7/13
] 超速情况 "code": "110010", "message": " 应用请求频率超过限制 ", "value": "", 别名推送接口 ( 透传消息 ) 接口功能 请求方法 请求路径 请求 HOST 请求头 备注 请求内容 内容 根据别名推送 Post /ups/api/server/push/unvarnished/pushbyalias server-api-mzups.meizu.com Content-Type:application/x-www-form-urlencoded;charset=UTF-8 签名参数 sign=md5_sign 响应码 200 响应头 请求参数 参数 appid alias sign messagejson 按 POST 提交表单的标准, 你的任何值字符串是需要 urlencode 编码的 推送应用 ID 必填 推送别名, 一批最多不能超过 1000 个多个英文逗号分割必填 签名必填 Json 格式, 具体如下必填 "content": 推送内容, string 必填, 字数限制 2000 字节以内 "pushtimeinfo": "offline": 是否进离线消息 0 否 1 是 [validtime] int 非必填, 默认值为 1 8/13
认 24 "validtime": 有效时长 (1-72 小时内的正整数 ) int offline 值为 1 时, 必填, 默 响应内容 成功情况 : "value": "msgid": "UPSDEV20171123143026239_100000002", "resptarget": 失败情况 "value": "msgid": "UPSDEV20171123143026239_100000002", "resptarget": "110003": [ "flyme" ] 超速情况 "code": "110010", "message": " 应用请求频率超过限制 ", "value": "", "redirect": "" 别名推送接口 ( 通知栏消息 ) 9/13
接口功能 请求方法 请求路径 请求 HOST 请求头 备注 请求内容 内容 根据别名推送 Post /ups/api/server/push/varnished/pushbyalias server-api-mzups.meizu.com Content-Type:application/x-www-form-urlencoded;charset=UTF-8 签名参数 sign=md5_sign 响应码 200 响应头 请求参数 参数 appid alias sign messagejson 按 POST 提交表单的标准, 你的任何值字符串是需要 urlencode 编码的 推送应用 ID 必填 推送别名, 一批最多不能超过 1000 个多个英文逗号分割必填 签名必填 Json 格式, 具体如下必填 "noticebarinfo": "title": 推送标题, string 必填, 字数限制 1~32 字符 "content": 推送内容, string 必填, 字数限制 1~100 字符, "clicktypeinfo": "clicktype": 点击动作 (0," 打开应用 "),(1," 打开应用页面 "),(2," 打开 URI 页面 "), (3, " 应用客户端自定义 "),(4, " 打开自定 Intent URI"); int 非必填, 默认为 0 "url": URI 页面地址, clicktype=2, 必填 "parameters": 参数 JSON 格式 非必填 "activity": 应用页面地址应用页面地址 clicktype=1, 必填格式 pkg.activity eg: com.meizu.upspushdemo.testactivity "customattribute": 应用客户端自定义 clicktype=3, 必填 "customuri": 打开自定 Intent URI clicktype=4, 必填 eg:upspushscheme://com.meizu.upspush/notify_detail?title=ups title&content=ups content, "pushtimeinfo": "offline": 是否进离线消息 (0 否 1 是 [validtime]) int 非必填, 默认值为 1 "validtime": 有效时长 (1 到 72 小时内的正整数 ) int offline 值为 1 时, 必填, 默认 24, "advanceinfo": 10/13
"suspend": 是否通知栏悬浮窗显示 (1 显示 0 不显示 ) int 非必填, 默认 1 "clearnoticebar": 是否可清除通知栏 (1 可以 0 不可以 ) int 非必填, 默认 1 "notificationtype": "vibrate": 震动 (0 关闭 1 开启 ), int 非必填, 默认 1 "lights": 闪光 (0 关闭 1 开启 ), int 非必填, 默认 1 "sound": 声音 (0 关闭 1 开启 ), int 非必填, 默认 1 响应内容 成功情况 : "value": "msgid": "UPSDEV20171204155029658_100000000", "resptarget":, // cp log "logs": "1": "msgid:ns20171204155029599_0_11168408", "2": "msgid:sdm15b455123738301602t", "3": "requestid:151237383037157123121" 失败情况 "value": "msgid": "UPSDEV20171123143026239_100000002", "resptarget": "110003": [ "flyme" ] 超速情况 11/13
"code": "110010", "message": " 应用请求频率超过限制 ", "value": "", "redirect": "" 统计 API 获取应用推送统计 内容 接口功能获取应用推送统计 ( 最长跨度 30 天 ) 请求方法请求路径请求 HOST 请求头备注请求内容 Get /ups/api/server/push/statistics/dailypushstatics server-api-mzups.meizu.com Content-Type:application/x-www-form-urlencoded;charset=UTF-8 签名参数 sign=md5_sign 响应码 200 响应头 请求参数 参数 appid starttime endtime sign 按 POST 提交表单的标准, 你的任何值字符串是需要 urlencode 编码的 推送应用 ID 必填 开始日期, 如 20140214 必填 结束日期, 如 20140218 必填 签名必填 响应内容 成功情况 : "redirect": "", "value": [ 12/13
], "acceptno": 609,// 接收数 "clickno": 30,// 点击数 "date": "2017-05-03",// 推送日期 "pushedno": 691287,// 推送总数 "acceptno": 228, "clickno": 31, "date": "2017-05-02", "pushedno": 228463, 失败情况 : "code": "500", "message": " 结束时间不能早于开始时间 ", "redirect": "", "value": "" "code": "500", "message": " 开始时间和结束时间不能相差 30 天以上 ", "redirect": "", "value": "" 13/13