Skip to content

Commit f1927d4

Browse files
author
mouzy@getui.com
committed
[init]1、项目初始化!
Change-Id: I28024e4a5b3783499c1af4a20457ca2dca486d5a
1 parent d649923 commit f1927d4

90 files changed

Lines changed: 7294 additions & 1 deletion

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 203 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,203 @@
1-
# getui-pushapi-java-client-v2
1+
欢迎使用[个推**PUSH** SDK For Java](https://docs.getui.com/getui/server/rest_v2/introduction/)
2+
3+
`个推PUSH SDK For Java`的主要目标是提升开发者在**服务端**集成个推推送服务的开发效率。
4+
开发者不需要进行复杂编程即可使用个推推送服务的各项常用功能,SDK可以自动帮您满足调用过程中所需的鉴权、组装参数、发送HTTP请求等非功能性要求。
5+
6+
下面向您介绍`个推PUSH SDK For Java`的使用方法。
7+
8+
9+
## 环境要求
10+
1. 需要配合`JDK 1.6`或其以上版本。
11+
12+
2. 使用`个推PUSH SDK`前,您需要先前往[个推开发者中心](https://dev.getui.com) 完成开发者接入的一些准备工作,创建应用。详细见[操作步骤](https://docs.getui.com/getui/start/devcenter/#1)
13+
14+
3. 准备工作完成后,前往[个推开发者中心](https://dev.getui.com)获取应用配置,后续将作为使用SDK的输入。详细见[操作步骤](https://docs.getui.com/getui/start/devcenter/#11)
15+
16+
17+
## 安装依赖
18+
### 通过[Maven](https://mvnrepository.com/)来管理项目依赖
19+
推荐通过Maven来管理项目依赖,您只需在项目的`pom.xml`文件中声明如下依赖
20+
21+
```xml
22+
<dependency>
23+
<groupId>com.getui</groupId>
24+
<artifactId>rasv2-java-sdk</artifactId>
25+
<version>1.0.0.0</version>
26+
</dependency>
27+
```
28+
29+
## 快速开始
30+
### 普通调用
31+
下列代码示例向您展示了使用`个推Push SDK For Java`调用一个API的3个主要步骤:
32+
33+
1. 设置参数,创建API。
34+
2. 发起API调用。
35+
3. 处理响应。
36+
37+
##### 使用示例:**创建API**
38+
39+
```java
40+
public class TestCreatApi {
41+
public void test() {
42+
GtApiConfiguration apiConfiguration = new GtApiConfiguration();
43+
//填写应用配置
44+
apiConfiguration.setAppId("xxx");
45+
apiConfiguration.setAppKey("xxx");
46+
apiConfiguration.setMasterSecret("xxx");
47+
// 接口调用前缀,请查看文档: 接口调用规范 -> 接口前缀, 可不填写appId
48+
apiConfiguration.setDomain("https://restapi.getui.com/v2/");
49+
// 实例化ApiHelper对象,用于创建接口对象
50+
ApiHelper apiHelper = ApiHelper.build(apiConfiguration);
51+
// 创建对象,建议复用。目前有PushApi、StatisticApi、UserApi
52+
PushApi pushApi = apiHelper.creatApi(PushApi.class);
53+
}
54+
}
55+
}
56+
```
57+
58+
##### 使用示例:**推送API**_根据cid进行单推
59+
60+
```java
61+
public class TestPushApi {
62+
//pushApi的创建见上述使用示例:创建API
63+
public PushApi pushApi;
64+
public void test() {
65+
//根据cid进行单推
66+
PushDTO<Audience> pushDTO = new PushDTO<Audience>();
67+
// 设置推送参数
68+
pushDTO.setRequestId(System.currentTimeMillis() + "");
69+
PushMessage pushMessage = new PushMessage();
70+
pushDTO.setPushMessage(pushMessage);
71+
GTNotification notification = new GTNotification();
72+
pushMessage.setNotification(notification);
73+
notification.setTitle("标题" + new Date());
74+
notification.setBody("body");
75+
notification.setClickType("url");
76+
notification.setUrl("https://www.getui.com");
77+
// 设置接收人信息
78+
Audience audience = new Audience();
79+
pushDTO.setAudience(audience);
80+
audience.addCid("xxx");
81+
82+
// 进行cid单推
83+
ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
84+
if (apiResult.isSuccess()) {
85+
// success
86+
System.out.println(apiResult.getData());
87+
} else {
88+
// failed
89+
System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
90+
}
91+
}
92+
}
93+
```
94+
##### 使用示例:**统计API**_获取单日推送数据
95+
```java
96+
public class TestStatisticApi {
97+
//StatisticApi的创建见上述使用示例:创建API
98+
public StatisticApi statisticApi;
99+
public void test() {
100+
// 获取单日推送数据
101+
Set<String> taskIds = new HashSet<String>();
102+
taskIds.add("xxx");
103+
ApiResult<Map<String, Map<String, StatisticDTO>>> apiResult = statisticApi.queryPushResultByTaskIds(taskIds);
104+
if (apiResult.isSuccess()) {
105+
// success
106+
System.out.println(apiResult.getData());
107+
} else {
108+
// failed
109+
System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
110+
}
111+
}
112+
}
113+
```
114+
115+
116+
##### 使用示例:**用户API**_查询用户状态
117+
```java
118+
public class TestUserApi {
119+
//UserApi的创建见上述使用示例:创建API
120+
public UserApi userApi;
121+
public void test() {
122+
Set<String> cids = new HashSet<String>();
123+
cids.add("xxx");
124+
// 查询用户状态
125+
ApiResult<Map<String, CidStatusDTO>> apiResult = userApi.queryUserStatus(cids);
126+
if (apiResult.isSuccess()) {
127+
// success
128+
System.out.println(apiResult.getData());
129+
} else {
130+
// failed
131+
System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
132+
}
133+
}
134+
}
135+
```
136+
> 其余推送功能[可参考该链接](https://github.com/GetuiLaboratory/getui-pushapi-java-client-v2/tree/main/src/test/java/com/getui/push/v2/sdk/api)
137+
138+
139+
### 设置代理
140+
> 当需要使用代理进行http访问时,可以参考如下设置
141+
142+
```java
143+
GtApiConfiguration apiConfiguration = new GtApiConfiguration();
144+
//设置代理对象,参数依次为host、端口、鉴权账户、鉴权密码。其中鉴权账户密码可选
145+
GtHttpProxyConfig proxyConfig = new GtHttpProxyConfig("xxx",xxx,"xxx","xxx");
146+
apiConfiguration.setProxyConfig(proxyConfig);
147+
ApiHelper apiHelper = ApiHelper.build(apiConfiguration);
148+
PushApi pushApi = apiHelper.creatApi(PushApi.class);
149+
```
150+
151+
152+
## 已支持的API列表
153+
以下是消息推送功能与推送API的对应关系
154+
155+
| API类别 | 功能 | 调用的API名称 |
156+
|-----------|-----------------|-----------------------------------------------------------|
157+
| 鉴权API | [鉴权](https://docs.getui.com/getui/server/rest_v2/token/#0) | com.getui.push.v2.sdk.api.AuthApi.auth |
158+
| 鉴权API | [删除鉴权](https://docs.getui.com/getui/server/rest_v2/token/#1) | com.getui.push.v2.sdk.api.AuthApi.close |
159+
| 推送API | [cid单推](https://docs.getui.com/getui/server/rest_v2/push/#1) | com.getui.push.v2.sdk.api.PushApi.pushToSingleByCid |
160+
| 推送API | [别名单推](https://docs.getui.com/getui/server/rest_v2/push/#2) | com.getui.push.v2.sdk.api.PushApi.pushToSingleByAlias |
161+
| 推送API | [cid批量单推](https://docs.getui.com/getui/server/rest_v2/push/#3) | com.getui.push.v2.sdk.api.PushApi.pushBatchByCid |
162+
| 推送API | [别名批量单推](https://docs.getui.com/getui/server/rest_v2/push/#4) | com.getui.push.v2.sdk.api.PushApi.pushBatchByAlias |
163+
| 推送API | [tolist创建消息](https://docs.getui.com/getui/server/rest_v2/push/#5) | com.getui.push.v2.sdk.api.PushApi.createMsg |
164+
| 推送API | [cid批量推](https://docs.getui.com/getui/server/rest_v2/push/#6) | com.getui.push.v2.sdk.api.PushApi.pushListByCid |
165+
| 推送API | [别名批量推](https://docs.getui.com/getui/server/rest_v2/push/#7) | com.getui.push.v2.sdk.api.PushApi.pushListByAlias |
166+
| 推送API | [群推](https://docs.getui.com/getui/server/rest_v2/push/#8) | com.getui.push.v2.sdk.api.PushApi.pushAll |
167+
| 推送API | [条件筛选用户推送](https://docs.getui.com/getui/server/rest_v2/push/#9) | com.getui.push.v2.sdk.api.PushApi.pushByTag |
168+
| 推送API | [标签快速推送](https://docs.getui.com/getui/server/rest_v2/push/#10) | com.getui.push.v2.sdk.api.PushApi.pushByFastCustomTag |
169+
| 推送API | [停止任务](https://docs.getui.com/getui/server/rest_v2/push/#11) | com.getui.push.v2.sdk.api.PushApi.stopPush |
170+
| 推送API | [查询定时任务](https://docs.getui.com/getui/server/rest_v2/push/#12) | com.getui.push.v2.sdk.api.PushApi.queryScheduleTask |
171+
| 推送API | [删除定时任务](https://docs.getui.com/getui/server/rest_v2/push/#13) | com.getui.push.v2.sdk.api.PushApi.deleteScheduleTask |
172+
| 统计API | [获取推送结果](https://docs.getui.com/getui/server/rest_v2/report/#1) | com.getui.push.v2.sdk.api.StatisticApi.queryPushResultByTaskIds |
173+
| 统计API | [任务组名查报表](https://docs.getui.com/getui/server/rest_v2/report/#2) | com.getui.push.v2.sdk.api.StatisticApi.queryPushResultByGroupName |
174+
| 统计API | [单日推送数据](https://docs.getui.com/getui/server/rest_v2/report/#3) | com.getui.push.v2.sdk.api.StatisticApi.queryPushResultByDate |
175+
| 统计API | [单日用户数据接口](https://docs.getui.com/getui/server/rest_v2/report/#4) | com.getui.push.v2.sdk.api.StatisticApi.queryUserDataByDate |
176+
| 统计API | [24小时在线用户数](https://docs.getui.com/getui/server/rest_v2/report/#5) | com.getui.push.v2.sdk.api.StatisticApi.queryOnlineUserData |
177+
| 用户API | [绑定别名](https://docs.getui.com/getui/server/rest_v2/user/#1) | com.getui.push.v2.sdk.api.UserApi.bindAlias |
178+
| 用户API | [根据cid查询别名](https://docs.getui.com/getui/server/rest_v2/user/#2) | com.getui.push.v2.sdk.api.UserApi.queryAliasByCid |
179+
| 用户API | [根据别名查询cid](https://docs.getui.com/getui/server/rest_v2/user/#3) | com.getui.push.v2.sdk.api.UserApi.queryCidByAlias |
180+
| 用户API | [批量解绑别名](https://docs.getui.com/getui/server/rest_v2/user/#4) | com.getui.push.v2.sdk.api.UserApi.batchUnbindAlias |
181+
| 用户API | [解绑所有别名](https://docs.getui.com/getui/server/rest_v2/user/#5) | com.getui.push.v2.sdk.api.UserApi.unbindAllAlias |
182+
| 用户API | [一个用户绑定一批标签](https://docs.getui.com/getui/server/rest_v2/user/#6) | com.getui.push.v2.sdk.api.UserApi.userBindTags |
183+
| 用户API | [一批用户绑定一个标签](https://docs.getui.com/getui/server/rest_v2/user/#7) | com.getui.push.v2.sdk.api.UserApi.usersBindTag |
184+
| 用户API | [一批用户解绑一个标签](https://docs.getui.com/getui/server/rest_v2/user/#8) | com.getui.push.v2.sdk.api.UserApi.deleteUsersTag |
185+
| 用户API | [查询标签](https://docs.getui.com/getui/server/rest_v2/user/#9) | com.getui.push.v2.sdk.api.UserApi.queryUserTags |
186+
| 用户API | [添加黑名单用户](https://docs.getui.com/getui/server/rest_v2/user/#10) | com.getui.push.v2.sdk.api.UserApi.addBlackUser |
187+
| 用户API | [移除黑名单用户](https://docs.getui.com/getui/server/rest_v2/user/#11) | com.getui.push.v2.sdk.api.UserApi.removeBlackUser |
188+
| 用户API | [查询用户状态](https://docs.getui.com/getui/server/rest_v2/user/#12) | com.getui.push.v2.sdk.api.UserApi.queryUserStatus |
189+
| 用户API | [设置角标(仅支持IOS)](https://docs.getui.com/getui/server/rest_v2/user/#13) | com.getui.push.v2.sdk.api.UserApi.setBadge |
190+
| 用户API | [查询用户总量](https://docs.getui.com/getui/server/rest_v2/user/#14) | com.getui.push.v2.sdk.api.UserApi.queryUser |
191+
192+
> 注:更多API持续更新中,敬请期待。
193+
194+
195+
## 新API接口开发指南
196+
1. 新建api接口类,使用类注解`com.getui.push.v2.sdk.anno.GtApi`标记为个推接口类
197+
198+
2. 接口,使用`com.getui.push.v2.sdk.anno.method`包下的方法注解`GtGet`/`GtPost`/`GtPut`/`GtDelete`标记请求方式,分别代表`GET``POST``PUT``DELETE`四种HTTP请求方式
199+
200+
3. 参数,使用`com.getui.push.v2.sdk.anno.param`包下的参数注解`GtPathParam`/`GtHeaderParam`/`GtQueryParam`/`GtBodyParam`标记参数类型,分别表示HTTP请求中的四种参数: 路径参数/header参数/query参数/body参数
201+
202+
## 其他链接
203+
[个推开发者平台](https://docs.getui.com/)

pom.xml

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.getui</groupId>
8+
<artifactId>rasv2-java-sdk</artifactId>
9+
<packaging>jar</packaging>
10+
<version>1.0.0.0</version>
11+
<url>https://github.com/GetuiLaboratory/getui-pushapi-java-client-v2</url>
12+
<name>Getui Push API Java Client</name>
13+
<description>Getui's officially supported Java client library for accessing Getui APIs.</description>
14+
15+
<licenses>
16+
<license>
17+
<name>The Apache Software License, Version 2.0</name>
18+
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
19+
<distribution>repo</distribution>
20+
</license>
21+
</licenses>
22+
23+
<properties>
24+
<spring.version>4.3.9.RELEASE</spring.version>
25+
<slf4j.version>1.7.25</slf4j.version>
26+
</properties>
27+
28+
<dependencies>
29+
<!-- spring 相关jar -->
30+
<dependency>
31+
<groupId>org.springframework</groupId>
32+
<artifactId>spring-context</artifactId>
33+
<version>${spring.version}</version>
34+
<scope>provided</scope>
35+
</dependency>
36+
37+
38+
<!-- ================================================= -->
39+
<!-- logback + slf4j -->
40+
<dependency>
41+
<groupId>org.slf4j</groupId>
42+
<artifactId>slf4j-api</artifactId>
43+
<version>${slf4j.version}</version>
44+
<scope>compile</scope>
45+
</dependency>
46+
<dependency>
47+
<groupId>ch.qos.logback</groupId>
48+
<artifactId>logback-classic</artifactId>
49+
<version>1.2.3</version>
50+
<scope>provided</scope>
51+
</dependency>
52+
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
53+
<dependency>
54+
<groupId>org.apache.httpcomponents</groupId>
55+
<artifactId>httpclient</artifactId>
56+
<version>4.5.13</version>
57+
</dependency>
58+
59+
<dependency>
60+
<groupId>com.google.code.gson</groupId>
61+
<artifactId>gson</artifactId>
62+
<version>2.8.6</version>
63+
</dependency>
64+
<dependency>
65+
<groupId>com.google.guava</groupId>
66+
<artifactId>guava</artifactId>
67+
<version>19.0</version>
68+
<scope>test</scope>
69+
</dependency>
70+
<dependency>
71+
<groupId>junit</groupId>
72+
<artifactId>junit</artifactId>
73+
<version>4.8.2</version>
74+
<scope>test</scope>
75+
</dependency>
76+
77+
</dependencies>
78+
<build>
79+
<plugins>
80+
<plugin>
81+
<groupId>org.apache.maven.plugins</groupId>
82+
<artifactId>maven-compiler-plugin</artifactId>
83+
<version>2.3.2</version>
84+
<configuration>
85+
<source>1.6</source>
86+
<target>1.6</target>
87+
<encoding>utf-8</encoding>
88+
</configuration>
89+
</plugin>
90+
<plugin>
91+
<artifactId>maven-resources-plugin</artifactId>
92+
<version>2.4.3</version>
93+
<configuration>
94+
<encoding>utf-8</encoding>
95+
</configuration>
96+
</plugin>
97+
<plugin>
98+
<artifactId>maven-source-plugin</artifactId>
99+
<version>2.1</version>
100+
<configuration>
101+
<attach>true</attach>
102+
</configuration>
103+
<executions>
104+
<execution>
105+
<phase>compile</phase>
106+
<goals>
107+
<goal>jar</goal>
108+
</goals>
109+
</execution>
110+
</executions>
111+
</plugin>
112+
</plugins>
113+
</build>
114+
</project>

0 commit comments

Comments
 (0)