[2017-12-06]V1.0.0.20171206
[2018-04-18]V1.0.0.20180418
[2018-06-12]V1.0.0.20180612
调用该类实例的方法来推送消息, 构造函数说明如下:
参数名称 |
类型 |
必填 |
默认 |
描述 |
appSecret |
String |
是 |
null |
注册应用appSecret |
useSSL |
Boolean |
否 |
false |
是否使用https接口调用:true 使用https连接,false使用http连接 |
推送消息实体(抽象类)
子类 |
说明 |
VarnishedMessage |
通知栏消息体 |
UnVarnishedMessage |
透传消息体 |
参数名称 |
类型 |
必填 |
默认 |
描述 |
appId |
Long |
是 |
null |
注册应用appId |
title |
String |
是 |
null |
推送标题, 【字数限制1~32】 |
content |
String |
是 |
null |
推送内容, 【字数限制1~100】 |
clickType |
int |
否 |
0 |
点击动作 (0,"打开应用"),(1,"打开应用页面"),(2,"打开URI页面")【非必填,默认值为0】 |
url |
String |
否 |
null |
URI页面地址, 【clickType为打开URI页面时,必填, 长度限制1000byte】 |
parameters |
JSONObject |
否 |
null |
透传参数 【JSON格式,非必填】 |
activity |
String |
否 |
null |
应用页面地址, 【clickType为打开应用页面时,格式 pkg.activity eg: com.meizu.upspushdemo.TestActivity 必填】 |
isOffLine |
Boolean |
否 |
true |
是否进离线消息, (false 否 true 是) 【非必填,默认值为true】 |
validTime |
int |
否 |
24 |
有效时长 (172小时内的正整数), 【isOffLine值为true时,必填,值的范围172】 |
pushTimeType |
int |
否 |
0 |
定时推送 (0, "即时"),(1, "定时"), 【只对全部用户推送生效】 |
startTime |
Date |
否 |
null |
任务定时开始时间,【非必填,pushTimeType为True必填】只对全部用户推送生效 |
isFixSpeed |
Boolean |
否 |
false |
是否定速推送, 【非必填,默认值为False】 |
fixSpeedRate |
Long |
否 |
0 |
定速速率,【isFixSpeed为true时,必填】 |
isSuspend |
Boolean |
否 |
true |
是否通知栏悬浮窗显示 (true显示,false不显示) 【非必填,默认True】 |
isClearNoticeBar |
Boolean |
否 |
true |
是否可清除通知栏 (true可以,false不可以) ,【非必填,默认true】 |
vibrate |
Boolean |
否 |
true |
震动 (false关闭 true 开启) , 【非必填,默认true】 |
lights |
Boolean |
否 |
true |
闪光 (false关闭 true 开启) , 【非必填,默认true】 |
sound |
Boolean |
否 |
true |
声音 (false关闭 true 开启) , 【非必填,默认true】 |
参数名称 |
类型 |
必填 |
默认 |
描述 |
appId |
Long |
是 |
null |
注册应用appId |
title |
String |
否 |
null |
推送标题,任务推送建议填写,方便数据查询,【字数限制1~32】 |
content |
String |
是 |
null |
推送内容,【必填,字数限制3800byte以内】 |
isOffLine |
Boolean |
否 |
true |
是否进离线消息,【非必填,默认为true】 |
validTime |
int |
否 |
24 |
有效时长 (1~72小时内的正整数),【isOffLine值为true时,必填,值的范围1--72】 |
pushTimeType |
int |
否 |
0 |
定时推送 (0, "即时"),(1, "定时"), 【只对全部用户推送生效】 |
startTime |
Date |
否 |
null |
任务定时开始时间, 【pushTimeType为1必填】只对全部用户推送生效 |
isFixSpeed |
Boolean |
否 |
false |
是否定速推送,【非必填,默认值为false】 |
fixSpeedRate |
Long |
否 |
0 |
定速速率 【isFixSpeed为true时,必填】 |
方法名称 |
类型 |
描述 |
code() |
String |
接口响应码 |
Comment() |
String |
接口响应描述 |
value() |
T |
接口响应内容 |
errorCode() |
Enum |
接口响应异常枚举 详见ErrorCode |
方法名称 |
类型 |
描述 |
getMsgId() |
String |
推送消息ID,用于推送流程明细排查 |
getRespTarget() |
Map |
推送目标结果状态(KEY:推送响应码 VALUE:响应码对应的目标用户 ) |
logs |
Map |
app渠道推送日志,用于问题排查(KEY:渠道 value:log) |
名称 |
Code |
Commen |
UNKNOWN_ERROR |
-1 |
未知错误 |
SUCCESS |
200 |
成功 |
SYSTEM_ERROR |
1001 |
系统错误 |
SYSTEM_BUSY |
1003 |
服务器忙 |
PARAMETER_ERROR |
1005 |
参数错误,请参考API文档 |
INVALID_SIGN |
1006 |
签名认证失败 |
INVALID_APPLICATION_ID |
110000 |
appId不合法 |
INVALID_APPLICATION_KEY |
110001 |
appKey不合法 |
UNSUBSCRIBE_PUSHID |
110002 |
pushId未注册 |
INVALID_PUSHID |
110003 |
pushId非法 |
PARAM_BLANK |
110004 |
参数不能为空 |
APP_REQUEST_EXCEED_LIMIT |
110010 |
应用请求频率过快 |
APP_PUSH_TIME_EXCEED_LIMIT |
110051 |
超过该应用的次数限制 |
APP_REQUEST_PUSH_LIMIT |
110019 |
超过该应用每天推送次数限制 |
INVALID_APPLICATION_PACKAGENAME |
110031 |
packageName不合法 |
INVALID_TASK_ID |
110032 |
非法的taskId |
INVALID_APPLICATION_SECRET |
110033 |
非法的appSecret |
DIRECT_OUT_LIMIT |
110053 |
透传超过限制 |
推送响应码定义(PushResponseCode)
名称 |
Code |
Commen |
RSP_NO_AUT |
201 |
没有权限,服务器主动拒绝 |
RSP_DB_ERROR |
501 |
推送消息失败(db_error) |
RSP_INTERNAL_ERROR |
513 |
推送消息失败 |
RSP_SPEED_LIMIT |
518 |
推送超过配置的速率 |
RSP_OVERFLOW |
519 |
推送消息失败服务过载 |
RSP_UNSUBSCRIBE_PUSHID |
110002 |
pushId未订阅(包括推送开关关闭的设备) |
RSP_INVALID_PUSHID |
110003 |
pushId非法 |
RSP_UNSUBSCRIBE_ALIAS |
110005 |
别名未订阅(包括推送开关关闭的设备) |
枚举 |
类型 |
描述 |
STATUSBAR |
Enum |
通知栏消息类型 |
DIRECT |
Enum |
透传消息类型 |
枚举 |
类型 |
描述 |
MEIZU |
Enum |
魅族 |
XIAOMI |
Enum |
小米 |
HUAWEI |
Enum |
华为 |
任务推送统计(天)(DailyPushStatics)
名称 |
类型 |
描述 |
date |
Date |
日期 |
pushedNo |
Long |
推送数 |
acceptNo |
Long |
接收数 |
clickNo |
Long |
点击数 |
向指定的pushId推送消息
注:推送平台使用pushId来标识每个独立的用户,每一台终端上每一个app拥有一个独立的pushId
- 场景1:查找手机业务需要远程定位位置,可发送消息指令到对应的设备
- 场景2:社区用户回帖消息提醒,用户对发表的帖子有最新回复时,消息提醒发帖者
pushId通知栏消息推送(pushMessage)
接口 |
说明 |
ResultPack<PushResult> pushMessage(VarnishedMessage message, List<String> pushIds) |
推送通知栏消息 |
ResultPack<PushResult> pushMessage(VarnishedMessage message, List<String> pushIds, int retries) |
推送通知栏消息 |
参数名称 |
类型 |
必需 |
默认 |
描述 |
message |
VarnishedMessage |
是 |
null |
推送消息 |
pushIds |
List |
是 |
null |
推送目标,一批最多不能超过1000个 |
retries |
int |
否 |
0 |
超时or异常重试次数 |
PushResult
msgId; 推送消息ID,用于推送流程明细排查
respTarget; 推送目标结果状态(key:推送响应码 value:响应码对应的目标用户 )
注:只返回不合法、超速以及推送失败的目标用户,业务一般对超速的pushId处理。
/**
* 通知栏消息推送(pushMessage)
* @throws Exception
*/
@Test
public void testVarnishedMessagePush() throws Exception {
//推送对象
IFlymeUpsPush push = new IFlymeUpsPush(APP_SECRET_KEY);
//组装消息
VarnishedMessage message = new VarnishedMessage.Builder().appId(appId)
.title("Java SDK 推送标题").content("消息内容")
.build();
//目标用户
List<String> pushIds = new ArrayList<String>();
pushIds.add("pushId_1");
pushIds.add("pushId_2");
// 1 调用推送服务
ResultPack<PushResult> result = push.pushMessage(message, pushIds);
if (result.isSucceed()) {
// 2 调用推送服务成功 (其中map为设备的具体推送结果,一般业务针对超速的code类型做处理)
PushResult pushResult = result.value();
String msgId = pushResult.getMsgId();//推送消息ID,用于推送流程明细排查
Map<String, List<String>> targetResultMap = pushResult.getRespTarget();//推送结果,全部推送成功,则map为empty
System.out.println("push result:" + pushResult);
if (targetResultMap != null && !targetResultMap.isEmpty()) {
System.err.println("push fail token:" + targetResultMap);
}
} else {
// 调用推送接口服务异常 eg: appId、appKey非法、推送消息非法.....
// result.code(); //服务异常码
// result.comment();//服务异常描述
System.out.println(String.format("pushMessage error code:%s comment:%s", result.code(), result.comment()));
}
}
pushId透传消息推送(pushMessage)
接口 |
说明 |
ResultPack<PushResult> pushMessage(UnVarnishedMessage message, List<String> pushIds) |
推送透传消息 |
ResultPack<PushResult> pushMessage(UnVarnishedMessage message, List<String> pushIds, int retries) |
推送透传消息 |
参数名称 |
类型 |
必需 |
默认 |
描述 |
message |
UnVarnishedMessage |
是 |
null |
推送消息 |
pushIds |
List |
是 |
null |
推送目标,一批最多不能超过1000个 |
retries |
int |
否 |
0 |
超时or异常重试次数 |
PushResult
msgId; 推送消息ID,用于推送流程明细排查
respTarget; 推送目标结果状态(key:推送响应码 value:响应码对应的目标用户 )
注:只返回不合法、超速以及推送失败的目标用户,业务一般对超速的pushId处理。
/**
* 透传消息推送(pushMessage)
* @throws Exception
*/
@Test
public void testUnVarnishedMessagePush() throws Exception {
//推送对象
IFlymeUpsPush push = new IFlymeUpsPush(APP_SECRET_KEY);
//组装透传消息
UnVarnishedMessage message = new UnVarnishedMessage.Builder()
.appId(appId)
.title("Java SDK 透传推送标题")
.content("Java Sdk透传推送内容")
.build();
//目标用户
List<String> pushIds = new ArrayList<String>();
pushIds.add("pushId_1");
pushIds.add("pushId_2");
// 1 调用推送服务
ResultPack<PushResult> result = push.pushMessage(message, pushIds);
if (result.isSucceed()) {
// 2 调用推送服务成功 (其中map为设备的具体推送结果,一般业务针对超速的code类型做处理)
PushResult pushResult = result.value();
String msgId = pushResult.getMsgId();//推送消息ID,用于推送流程明细排查
Map<String, List<String>> targetResultMap = pushResult.getRespTarget();//推送结果,全部推送成功,则map为empty
System.out.println("push result:" + pushResult);
if (targetResultMap != null && !targetResultMap.isEmpty()) {
System.err.println("push fail token:" + targetResultMap);
}
} else {
// 调用推送接口服务异常 eg: appId、appKey非法、推送消息非法.....
// result.code(); //服务异常码
// result.comment();//服务异常描述
System.out.println(String.format("pushMessage error code:%s comment:%s", result.code(), result.comment()));
}
}
别名通知栏消息推送(pushMessageByAlias)
接口 |
说明 |
ResultPack<PushResult> pushMessageByAlias(VarnishedMessage message, List<String> alias) |
推送通知栏消息 |
ResultPack<PushResult> pushMessageByAlias(VarnishedMessage message, List<String> alias, int retries) |
推送通知栏消息 |
参数名称 |
类型 |
必需 |
默认 |
描述 |
message |
VarnishedMessage |
是 |
null |
推送消息 |
alias |
List |
是 |
null |
推送目标,一批最多不能超过1000个 |
retries |
int |
否 |
0 |
超时or异常重试次数 |
PushResult
msgId; 推送消息ID,用于推送流程明细排查
respTarget; 推送目标结果状态(key:推送响应码 value:响应码对应的目标用户 )
注:只返回不合法、超速以及推送失败的目标用户
/**
* 别名通知栏消息推送(pushMessage)
*
* @throws Exception
*/
@Test
public void testVarnishedMessagePushByAlias() throws Exception {
//推送对象
IFlymeUpsPush push = new IFlymeUpsPush(APP_SECRET_KEY);
//组装消息
VarnishedMessage message = new VarnishedMessage.Builder().appId(appId)
.title("Java SDK 推送标题").content("Java SDK 推送内容")
.build();
//目标用户
List<String> alias = new ArrayList<String>();
alias.add("alias1");
alias.add("alias2");
// 1 调用推送服务
ResultPack<PushResult> result = push.pushMessageByAlias(message, alias);
// 2 处理推送结果
if (result.isSucceed()) {
// 2 调用推送服务成功 (其中map为设备的具体推送结果,一般业务针对超速的code类型做处理)
PushResult pushResult = result.value();
String msgId = pushResult.getMsgId();//推送消息ID,用于推送流程明细排查
Map<String, List<String>> targetResultMap = pushResult.getRespTarget();//推送结果,全部推送成功,则map为empty
System.out.println("push result:" + pushResult);
if (targetResultMap != null && !targetResultMap.isEmpty()) {
System.err.println("push fail token:" + targetResultMap);
}
} else {
// 调用推送接口服务异常 eg: appId、appKey非法、推送消息非法.....
// result.code(); //服务异常码
// result.comment();//服务异常描述
System.out.println(String.format("pushMessage error code:%s comment:%s", result.code(), result.comment()));
}
}
别名透传消息推送(pushMessageByAlias)
接口 |
说明 |
ResultPack<PushResult> pushMessageByAlias(UnVarnishedMessage message, List<String> alias) |
推送透传消息 |
ResultPack<PushResult> pushMessageByAlias(UnVarnishedMessage message, List<String> alias, int retries) |
推送透传消息 |
参数名称 |
类型 |
必需 |
默认 |
描述 |
message |
UnVarnishedMessage |
是 |
null |
推送消息 |
alias |
List |
是 |
null |
推送目标,一批最多不能超过1000个 |
retries |
int |
否 |
0 |
超时or异常重试次数 |
PushResult
msgId; 推送消息ID,用于推送流程明细排查
respTarget; 推送目标结果状态(key:推送响应码 value:响应码对应的目标用户 )
注:只返回不合法、超速以及推送失败的目标用户
/**
* 别名透传推送
*
* @throws Exception
*/
@Test
public void testUnVarnishedMessagePushByALias() throws Exception {
//推送对象
IFlymeUpsPush push = new IFlymeUpsPush(APP_SECRET_KEY);
//组装透传消息
UnVarnishedMessage message = new UnVarnishedMessage.Builder()
.appId(appId)
.title("Java SDK 透传推送标题")
.content("Java Sdk透传推送内容")
.build();
//目标用户
List<String> alias = new ArrayList<String>();
alias.add("alias");
alias.add("alias2");
// 1 调用推送服务
ResultPack<PushResult> result = push.pushMessageByAlias(message, alias);
if (result.isSucceed()) {
// 2 调用推送服务成功 (其中map为设备的具体推送结果,一般业务针对超速的code类型做处理)
PushResult pushResult = result.value();
String msgId = pushResult.getMsgId();//推送消息ID,用于推送流程明细排查
Map<String, List<String>> targetResultMap = pushResult.getRespTarget();//推送结果,全部推送成功,则map为empty
System.out.println("push result:" + pushResult);
if (targetResultMap != null && !targetResultMap.isEmpty()) {
System.err.println("push fail token:" + targetResultMap);
}
} else {
// 调用推送接口服务异常 eg: appId、appKey非法、推送消息非法.....
// result.code(); //服务异常码
// result.comment();//服务异常描述
System.out.println(String.format("pushMessage error code:%s comment:%s", result.code(), result.comment()));
}
}
接口 |
说明 |
ResultPack<Long> pushToApp(PushType pushType, Message message) |
应用全网推送 |
参数名称 |
类型 |
必需 |
默认 |
描述 |
message |
UnVarnishedMessage |
是 |
null |
推送消息 |
/**
* 应用全网推送
* @throws IOException
*/
@Test
public void testPushToApp() throws IOException {
//推送对象
IFlymeUpsPush push = new IFlymeUpsPush(APP_SECRET_KEY);
JSONObject param = new JSONObject();
param.put("key", "v1");
param.put("k2", "v2");
param.put("k3", "v3");
//组装消息
VarnishedMessage message = new VarnishedMessage.Builder().appId(appId)
.title("Java SDK 推送标题").content("消息内容")
.build();
// 1 调用推送服务
ResultPack<Long> result = push.pushToApp(PushType.STATUSBAR, message);
System.out.println(result);
}
接口 |
说明 |
ResultPack<Boolean> cancelTaskPush(PushType pushType, long appId, long taskId) |
只针对全部用户推送且推送状态为待推送或者推送中的任务取消 |
参数名称 |
类型 |
必需 |
默认 |
描述 |
pushType |
PushType |
是 |
null |
消息类型 |
appId |
Long |
是 |
null |
应用ID |
taskId |
Long |
是 |
null |
任务ID |
/**
* 取消推送任务(cancelTaskPush) 只针对全网推送生效
*
* @throws IOException
*/
@Test
public void testCancelTaskPush() throws IOException {
//推送对象
IFlymeUpsPush push = new IFlymeUpsPush(APP_SECRET_KEY);
long taskId = 60;
ResultPack<Boolean> resultPack = push.cancelTaskPush(PushType.STATUSBAR, appId, taskId);
System.out.println(resultPack);
}
获取应用推送统计(dailyPushStatics)
接口 |
说明 |
public ResultPack<List<DailyPushStatics>> dailyPushStatics(long appId, Date startTime, Date endTime) |
获取应用推送统计 |
参数名称 |
类型 |
必需 |
默认 |
描述 |
appId |
Long |
是 |
null |
应用ID |
startTime |
Date |
是 |
null |
开始日期 |
endTime |
Date |
是 |
null |
结束日期 |
/**
* 获取任务统计结果
*
* @throws IOException
*/
@Test
public void testDailyPushStatics() throws IOException {
//推送对象
IFlymeUpsPush push = new IFlymeUpsPush(APP_SECRET_KEY);
Date startTime = DateUtils.str2Date("2017-06-03", "yyyy-MM-dd");
Date endTime = DateUtils.str2Date("2017-06-10", "yyyy-MM-dd");
ResultPack<List<DailyPushStatics>> resultPack = push.dailyPushStatics(appId, startTime, endTime);
System.out.println(resultPack);
}