- 中央仓库获取 MVN Repository或者 Central Repository
- 直接下载获取 Java Server SDK
- update log config
- 增加取消应用全网推送
- 增加应用全网推送
- 1.0.0标准版
调用该类实例的方法来推送消息, 构造函数说明如下:
参数名称 | 类型 | 必填 | 默认 | 描述 |
---|---|---|---|---|
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 | 有效时长 (1 |
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 | 透传超过限制 |
名称 | 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 | 华为 |
名称 | 类型 | 描述 |
---|---|---|
date | Date | 日期 |
pushedNo | Long | 推送数 |
acceptNo | Long | 接收数 |
clickNo | Long | 点击数 |
向指定的pushId推送消息
注:推送平台使用pushId来标识每个独立的用户,每一台终端上每一个app拥有一个独立的pushId
- 场景1:查找手机业务需要远程定位位置,可发送消息指令到对应的设备
- 场景2:社区用户回帖消息提醒,用户对发表的帖子有最新回复时,消息提醒发帖者
- 接口说明
接口 | 说明 |
---|---|
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()));
}
}
- 接口说明
接口 | 说明 |
---|---|
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()));
}
}
- 接口说明
接口 | 说明 |
---|---|
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()));
}
}
- 接口说明
接口 | 说明 |
---|---|
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 | 推送消息 |
- 返回值
Long 任务ID
- 示例
/**
* 应用全网推送
* @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 |
- 返回值
Boolean true:成功 false:失败
- 示例
/**
* 取消推送任务(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);
}
- 接口说明
接口 | 说明 |
---|---|
public ResultPack<List<DailyPushStatics>> dailyPushStatics(long appId, Date startTime, Date endTime) |
获取应用推送统计 |
- 参数说明
参数名称 | 类型 | 必需 | 默认 | 描述 |
---|---|---|---|---|
appId | Long | 是 | null | 应用ID |
startTime | Date | 是 | null | 开始日期 |
endTime | Date | 是 | null | 结束日期 |
- 返回值
List<DailyPushStatics>
- 示例
/**
* 获取任务统计结果
*
* @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);
}