Skip to content

Latest commit

History

86 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

简体中文 | English

欢迎使用个推PUSH SDK For Java

个推PUSH SDK For Java的主要目标是提升开发者在服务端集成个推推送服务的开发效率。 开发者不需要进行复杂编程即可使用个推推送服务的各项常用功能,SDK可以自动帮您满足调用过程中所需的鉴权、组装参数、发送HTTP请求等非功能性要求。

下面向您介绍个推PUSH SDK For Java的使用方法。

环境要求

  1. 需要配合JDK 1.8或其以上版本。

  2. 使用个推PUSH SDK前,您需要先前往个推开发者中心 完成开发者接入的一些准备工作,创建应用。详细见操作步骤

  3. 准备工作完成后,前往个推开发者中心获取应用配置,后续将作为使用SDK的输入。详细见操作步骤

安装依赖

通过Maven来管理项目依赖

推荐通过Maven来管理项目依赖,您只需在项目的pom.xml文件中声明如下依赖

<dependency>
<groupId>com.getui.push</groupId>
<artifactId>restful-sdk</artifactId>
<version>1.0.11.0</version>
</dependency>

快速开始

普通调用

下列代码示例向您展示了使用个推Push SDK For Java调用一个API的3个主要步骤:

  1. 设置参数,创建API。
  2. 发起API调用。
  3. 处理响应。
使用示例:创建API
publicclassTestCreatApi {
publicvoidtest() {
// 设置httpClient最大连接数,当并发较大时建议调大此参数。或者启动参数加上 -Dhttp.maxConnections=200System.setProperty("http.maxConnections", "200");
GtApiConfigurationapiConfiguration = newGtApiConfiguration();
//填写应用配置apiConfiguration.setAppId("xxx");
apiConfiguration.setAppKey("xxx");
apiConfiguration.setMasterSecret("xxx");
// 接口调用前缀,请查看文档: 接口调用规范 -> 接口前缀apiConfiguration.setDomain("https://restapi.getui.com/v2/");
// 实例化ApiHelper对象,用于创建接口对象ApiHelperapiHelper = ApiHelper.build(apiConfiguration);
// 创建对象,建议复用。目前有PushApi、StatisticApi、UserApiPushApipushApi = apiHelper.creatApi(PushApi.class);
}
}
已支持的配置项说明
通过代码修改启动项默认值说明
gtApiConfiguration.setSoTimeout(30000);-Dgt.socket.timeout=3000030000修改全局的套接字读超时时间,默认30s,单位ms
gtApiConfiguration.setCustomSocketTimeout(PushApi.singleCidUri, 3000);-D/push/single/cid=默认为gt.socket.timeout的值cid单推接口设置套接字读取超时时间,单位ms
gtApiConfiguration.setCustomSocketTimeout(PushApi.singleAliasUri, 3000);-D/push/single/alias=默认为gt.socket.timeout的值别名单推接口设置套接字读取超时时间,单位ms
gtApiConfiguration.setCustomSocketTimeout(PushApi.singleBatchCidUri, 6000);-D/push/single/batch/cid=默认为gt.socket.timeout的值cid批量单推接口设置套接字读取超时时间,单位ms
gtApiConfiguration.setCustomSocketTimeout(PushApi.singleBatchAliasUri, 6000);-D/push/single/batch/alias=默认为gt.socket.timeout的值别名批量单推接口设置套接字读取超时时间,单位ms
gtApiConfiguration.setCustomSocketTimeout(PushApi.pushListMessageUri, 3000);-D/push/list/message=默认为gt.socket.timeout的值保存列表推消息体接口设置套接字读取超时时间,单位ms
gtApiConfiguration.setCustomSocketTimeout(PushApi.pushListCidUri, 6000);-D/push/list/cid=默认为gt.socket.timeout的值cid列表推接口设置套接字读取超时时间,单位ms
gtApiConfiguration.setCustomSocketTimeout(PushApi.pushListAliasUri, 6000);-D/push/list/alias=默认为gt.socket.timeout的值别名列表推接口设置套接字读取超时时间,单位ms
gtApiConfiguration.setConnectTimeout(10000);-Dgt.connect.timeout=1000010000修改连接超时时间,默认10s,单位ms
gtApiConfiguration.setMaxHttpTryTime(1);-Dgt.max.http.try.times=11设置重试次数;
上述配置项设为1时,如果请求失败(超时或其他异常),sdk内部会重试1次,重试可能造成消息重复,建议客户配合消息幂等使用,详见文档:消息覆盖https://docs.getui.com/getui/server/rest_v2/advanced/
用户不接受重试的,可将此值改为0
gtApiConfiguration.setOpenAnalyseStableDomainSwitch(true);-Dgt.analyse.stable.domain.switch=truetrue是否开启稳定域名检测
gtApiConfiguration.setMaxFailedNum(10);-Dgt.max.failed.num=1010开启稳定域名检测时生效,单位时间内失败总次数阈值,达到阈值会切换域名
gtApiConfiguration.setCheckMaxFailedNumInterval(3000);-Dgt.check.max.failed.num.interval=30003000开启稳定域名检测时生效,修改上述阈值的单位时间,单位ms
gtApiConfiguration.setContinuousFailedNum(3);-Dgt.continuous.failed.num=33开启稳定域名检测时生效,连续失败次数达到阈值会切换域名
使用示例:推送API_根据cid进行单推
publicclassTestPushApi {
//pushApi的创建见上述使用示例:创建APIpublicPushApipushApi;
publicvoidtest() {
//根据cid进行单推PushDTO<Audience> pushDTO = newPushDTO<Audience>();
// 设置推送参数pushDTO.setRequestId(System.currentTimeMillis() + "");
/**** 设置个推通道参数 *****/PushMessagepushMessage = newPushMessage();
pushDTO.setPushMessage(pushMessage);
GTNotificationnotification = newGTNotification();
pushMessage.setNotification(notification);
notification.setTitle("个title");
notification.setBody("个body");
notification.setClickType("url");
notification.setUrl("https://www.getui.com");
/**** 设置个推通道参数,更多参数请查看文档或对象源码 *****//**** 设置厂商相关参数 ****/PushChannelpushChannel = newPushChannel();
pushDTO.setPushChannel(pushChannel);
/*配置安卓厂商参数*/AndroidDTOandroidDTO = newAndroidDTO();
pushChannel.setAndroid(androidDTO);
Upsups = newUps();
androidDTO.setUps(ups);
ThirdNotificationthirdNotification = newThirdNotification();
ups.setNotification(thirdNotification);
thirdNotification.setTitle("厂商title");
thirdNotification.setBody("厂商body");
thirdNotification.setClickType("url");
thirdNotification.setUrl("https://www.getui.com");
// 两条消息的notify_id相同,新的消息会覆盖老的消息,取值范围:0-2147483647// thirdNotification.setNotifyId("11177");/*配置安卓厂商参数结束,更多参数请查看文档或对象源码*//*设置ios厂商参数*/IosDTOiosDTO = newIosDTO();
pushChannel.setIos(iosDTO);
// 相同的collapseId会覆盖之前的消息iosDTO.setApnsCollapseId("xxx");
Apsaps = newAps();
iosDTO.setAps(aps);
Alertalert = newAlert();
aps.setAlert(alert);
alert.setTitle("ios title");
alert.setBody("ios body");
/*设置ios厂商参数结束,更多参数请查看文档或对象源码*//*配置鸿蒙厂商参数*/HarmonyDTOharmonyDTO = newHarmonyDTO();
pushChannel.setHarmony(harmonyDTO);
HarmonyNotificationharmonyNotification = newHarmonyNotification();
harmonyDTO.setNotification(harmonyNotification);
harmonyNotification.setTitle("鸿蒙厂商title");
harmonyNotification.setBody("鸿蒙厂商body");
harmonyNotification.setCategory("MARKETING");
harmonyNotification.setClickType("want");
harmonyNotification.setWant("{\"deviceId\":\"\",\"bundleName\":\"com.getui.push\",\"abilityName\":\"TestAbility\",\"uri\":\"https://www.test.com:8080/push/test\",\"action\":\"com.test.action\",\"parameters\":{\"name\":\"Getui\",\"age\":12}}");
/*配置鸿蒙厂商参数结束,更多参数请查看文档或对象源码*//*设置接收人信息*/Audienceaudience = newAudience();
pushDTO.setAudience(audience);
audience.addCid("xxx");
/*设置接收人信息结束*//**** 设置厂商相关参数,更多参数请查看文档或对象源码 ****/// 进行cid单推ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
if (apiResult.isSuccess()) {
// successSystem.out.println(apiResult.getData());
} else {
// failedSystem.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
}
}
}
使用示例:统计API_获取单日推送数据
publicclassTestStatisticApi {
//StatisticApi的创建见上述使用示例:创建APIpublicStatisticApistatisticApi;
publicvoidtest() {
// 获取单日推送数据Set<String> taskIds = newHashSet<String>();
taskIds.add("xxx");
ApiResult<Map<String, Map<String, StatisticDTO>>> apiResult = statisticApi.queryPushResultByTaskIds(taskIds);
if (apiResult.isSuccess()) {
// successSystem.out.println(apiResult.getData());
} else {
// failedSystem.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
}
}
}
使用示例:用户API_查询用户状态
publicclassTestUserApi {
//UserApi的创建见上述使用示例:创建APIpublicUserApiuserApi;
publicvoidtest() {
Set<String> cids = newHashSet<String>();
cids.add("xxx");
// 查询用户状态ApiResult<Map<String, CidStatusDTO>> apiResult = userApi.queryUserStatus(cids);
if (apiResult.isSuccess()) {
// successSystem.out.println(apiResult.getData());
} else {
// failedSystem.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
}
}
}

其余推送功能可参考该链接

设置代理

当需要使用代理进行http访问时,可以参考如下设置

 GtApiConfiguration apiConfiguration = new GtApiConfiguration();
//设置代理对象,参数依次为host、端口、鉴权账户、鉴权密码。其中鉴权账户密码可选
GtHttpProxyConfig proxyConfig = new GtHttpProxyConfig("xxx",xxx,"xxx","xxx");
apiConfiguration.setProxyConfig(proxyConfig);
ApiHelper apiHelper = ApiHelper.build(apiConfiguration);
PushApi pushApi = apiHelper.creatApi(PushApi.class);

已支持的API列表

以下是消息推送功能与推送API的对应关系

API类别功能调用的API名称
鉴权API鉴权com.getui.push.v2.sdk.api.AuthApi.auth
鉴权API删除鉴权com.getui.push.v2.sdk.api.AuthApi.close
推送APIcid单推com.getui.push.v2.sdk.api.PushApi.pushToSingleByCid
推送API别名单推com.getui.push.v2.sdk.api.PushApi.pushToSingleByAlias
推送APIcid批量单推com.getui.push.v2.sdk.api.PushApi.pushBatchByCid
推送API别名批量单推com.getui.push.v2.sdk.api.PushApi.pushBatchByAlias
推送APItolist创建消息com.getui.push.v2.sdk.api.PushApi.createMsg
推送APIcid批量推com.getui.push.v2.sdk.api.PushApi.pushListByCid
推送API别名批量推com.getui.push.v2.sdk.api.PushApi.pushListByAlias
推送API群推com.getui.push.v2.sdk.api.PushApi.pushAll
推送API条件筛选用户推送com.getui.push.v2.sdk.api.PushApi.pushByTag
推送API标签快速推送com.getui.push.v2.sdk.api.PushApi.pushByFastCustomTag
推送API停止任务com.getui.push.v2.sdk.api.PushApi.stopPush
推送API查询定时任务com.getui.push.v2.sdk.api.PushApi.queryScheduleTask
推送API删除定时任务com.getui.push.v2.sdk.api.PushApi.deleteScheduleTask
统计API获取推送结果com.getui.push.v2.sdk.api.StatisticApi.queryPushResultByTaskIds
统计API任务组名查报表com.getui.push.v2.sdk.api.StatisticApi.queryPushResultByGroupName
统计API单日推送数据com.getui.push.v2.sdk.api.StatisticApi.queryPushResultByDate
统计API单日用户数据接口com.getui.push.v2.sdk.api.StatisticApi.queryUserDataByDate
统计API24小时在线用户数com.getui.push.v2.sdk.api.StatisticApi.queryOnlineUserData
用户API绑定别名com.getui.push.v2.sdk.api.UserApi.bindAlias
用户API根据cid查询别名com.getui.push.v2.sdk.api.UserApi.queryAliasByCid
用户API根据别名查询cidcom.getui.push.v2.sdk.api.UserApi.queryCidByAlias
用户API批量解绑别名com.getui.push.v2.sdk.api.UserApi.batchUnbindAlias
用户API解绑所有别名com.getui.push.v2.sdk.api.UserApi.unbindAllAlias
用户API一个用户绑定一批标签com.getui.push.v2.sdk.api.UserApi.userBindTags
用户API一批用户绑定一个标签com.getui.push.v2.sdk.api.UserApi.usersBindTag
用户API一批用户解绑一个标签com.getui.push.v2.sdk.api.UserApi.deleteUsersTag
用户API查询标签com.getui.push.v2.sdk.api.UserApi.queryUserTags
用户API添加黑名单用户com.getui.push.v2.sdk.api.UserApi.addBlackUser
用户API移除黑名单用户com.getui.push.v2.sdk.api.UserApi.removeBlackUser
用户API查询用户状态com.getui.push.v2.sdk.api.UserApi.queryUserStatus
用户API设置角标(仅支持IOS)com.getui.push.v2.sdk.api.UserApi.setBadge
用户API查询用户总量com.getui.push.v2.sdk.api.UserApi.queryUser

注:更多API持续更新中,敬请期待。

新API接口开发指南

  1. 新建api接口类,使用类注解com.getui.push.v2.sdk.anno.GtApi标记为个推接口类

  2. 接口,使用com.getui.push.v2.sdk.anno.method包下的方法注解GtGet/GtPost/GtPut/GtDelete标记请求方式,分别代表GETPOSTPUTDELETE四种HTTP请求方式

  3. 参数,使用com.getui.push.v2.sdk.anno.param包下的参数注解GtPathParam/GtHeaderParam/GtQueryParam/GtBodyParam标记参数类型,分别表示HTTP请求中的四种参数: 路径参数/header参数/query参数/body参数

其他链接

个推开发者平台

About

个推官方提供的推送服务端SDK(Java语言),基于全新的RestAPI V2接口(https://docs.getui.com/getui/server/rest_v2/introduction/

Resources

Stars

114 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages