2026-05-05 23:32:06 +08:00
|
|
|
|
# Java Server SDK
|
|
|
|
|
|
|
2026-05-08 18:32:00 +08:00
|
|
|
|
XuqmGroup 服务端 Java SDK,按腾讯云服务端 API 的思路封装了以下能力:
|
|
|
|
|
|
|
|
|
|
|
|
- IM 账号与登录
|
|
|
|
|
|
- 消息发送、编辑、撤回、历史查询
|
|
|
|
|
|
- 好友、黑名单、会话、群组
|
|
|
|
|
|
- Webhook、管理端操作、统计
|
|
|
|
|
|
- Push 注册与发送
|
|
|
|
|
|
- Update 版本检查、上传、发布、灰度、应用商店提审
|
2026-05-05 23:32:06 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 安装
|
|
|
|
|
|
|
|
|
|
|
|
Maven 在 `pom.xml` 中添加:
|
|
|
|
|
|
|
|
|
|
|
|
```xml
|
|
|
|
|
|
<repository>
|
2026-05-08 18:32:00 +08:00
|
|
|
|
<id>xuqm-nexus</id>
|
|
|
|
|
|
<url>https://nexus.xuqinmin.com/repository/maven-public/</url>
|
2026-05-05 23:32:06 +08:00
|
|
|
|
</repository>
|
|
|
|
|
|
|
|
|
|
|
|
<dependency>
|
|
|
|
|
|
<groupId>com.xuqm</groupId>
|
2026-05-08 18:32:00 +08:00
|
|
|
|
<artifactId>im-sdk</artifactId>
|
|
|
|
|
|
<version>0.1.0-SNAPSHOT</version>
|
2026-05-05 23:32:06 +08:00
|
|
|
|
</dependency>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Gradle:
|
|
|
|
|
|
|
|
|
|
|
|
```kotlin
|
|
|
|
|
|
repositories {
|
2026-05-08 18:32:00 +08:00
|
|
|
|
maven { url = uri("https://nexus.xuqinmin.com/repository/maven-public/") }
|
2026-05-05 23:32:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
dependencies {
|
2026-05-08 18:32:00 +08:00
|
|
|
|
implementation("com.xuqm:im-sdk:0.1.0-SNAPSHOT")
|
2026-05-05 23:32:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 初始化
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
2026-05-08 18:32:00 +08:00
|
|
|
|
import com.xuqm.im.sdk.XuqmImServerSdk;
|
2026-05-05 23:32:06 +08:00
|
|
|
|
|
2026-05-08 18:32:00 +08:00
|
|
|
|
XuqmImServerSdk client = XuqmImServerSdk.builder()
|
2026-05-05 23:32:06 +08:00
|
|
|
|
.baseUrl("https://dev.xuqinmin.com")
|
2026-05-08 18:32:00 +08:00
|
|
|
|
.appKey("your_app_key")
|
2026-05-05 23:32:06 +08:00
|
|
|
|
.appSecret("your_app_secret")
|
2026-05-08 18:32:00 +08:00
|
|
|
|
.build();
|
2026-05-05 23:32:06 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
> 服务端 SDK 需要 `appSecret` 用于 HMAC 签名,`appSecret` 绝不下发到客户端。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 发送消息
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
2026-05-08 18:32:00 +08:00
|
|
|
|
import com.xuqm.im.sdk.XuqmImServerSdk.ImMessage;
|
|
|
|
|
|
import com.xuqm.im.sdk.XuqmImServerSdk.SendMessageRequest;
|
|
|
|
|
|
|
|
|
|
|
|
ImMessage msg = client.sendMessage(new SendMessageRequest(
|
|
|
|
|
|
"user_002",
|
|
|
|
|
|
"SINGLE",
|
|
|
|
|
|
"TEXT",
|
|
|
|
|
|
"Hello from Java SDK!",
|
|
|
|
|
|
null,
|
|
|
|
|
|
null,
|
|
|
|
|
|
null
|
|
|
|
|
|
));
|
2026-05-05 23:32:06 +08:00
|
|
|
|
|
|
|
|
|
|
System.out.println("消息已发送: " + msg.getId());
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 发送群消息
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
|
ImMessage msg = client.sendMessage(SendMessageRequest.builder()
|
|
|
|
|
|
.toId("group_xxx")
|
|
|
|
|
|
.chatType("GROUP")
|
|
|
|
|
|
.msgType("TEXT")
|
|
|
|
|
|
.content("大家好")
|
|
|
|
|
|
.build());
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 撤回消息
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
|
client.revokeMessage("message_id");
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-05-08 18:32:00 +08:00
|
|
|
|
## 能力分类
|
|
|
|
|
|
|
|
|
|
|
|
| 分类 | 主要方法 |
|
|
|
|
|
|
|------|----------|
|
|
|
|
|
|
| IM 账号 | `login`, `importAccount`, `importAccounts`, `deleteAccount`, `getProfile`, `updateProfile`, `searchAccounts` |
|
|
|
|
|
|
| 消息 | `sendMessage`, `revokeMessage`, `editMessage`, `fetchHistory`, `fetchGroupHistory`, `searchMessages` |
|
|
|
|
|
|
| 会话 | `listConversations`, `setConversationPinned`, `setConversationMuted`, `markRead`, `setDraft`, `setConversationHidden`, `setConversationGroup`, `deleteConversation` |
|
|
|
|
|
|
| 好友 | `listFriends`, `addFriend`, `addFriends`, `removeFriend`, `removeFriends`, `removeAllFriends`, `setFriendGroup`, `listFriendGroups`, `listFriendsByGroup`, `checkFriends` |
|
|
|
|
|
|
| 黑名单 | `listBlacklist`, `addBlacklist`, `removeBlacklist`, `checkBlacklist` |
|
|
|
|
|
|
| 群组 | `listGroups`, `createGroup`, `updateGroup`, `addGroupMember`, `addGroupMembers`, `removeGroupMember`, `removeGroupMembers`, `setGroupRole`, `transferGroupOwner`, `leaveGroup`, `updateGroupAttributes`, `removeGroupAttributes`, `muteGroupMember`, `dismissGroup`, `sendGroupJoinRequest`, `listGroupJoinRequests`, `acceptGroupJoinRequest`, `rejectGroupJoinRequest`, `acceptGroupJoinRequests`, `rejectGroupJoinRequests` |
|
|
|
|
|
|
| 管理端 | `queryUserState`, `kickUsers`, `batchSendMessage`, `adminSetMsgRead`, `importMessages`, `adminTransferGroupOwner`, `adminUpdateGroupAttributes`, `adminRemoveGroupAttributes`, `adminGroupReadReceipts` |
|
|
|
|
|
|
| Webhook | `listWebhooks`, `createWebhook`, `updateWebhook`, `deleteWebhook`, `verifyCallbackSignature`, `parseCallbackEnvelope`, 各类 `parse*CallbackPayload` |
|
|
|
|
|
|
| Push | `registerPushToken`, `sendPush` |
|
|
|
|
|
|
| Update | `checkAppUpdate`, `uploadAppVersion`, `publishAppVersion`, `unpublishAppVersion`, `grayAppVersion`, `listAppVersions`, `checkRnUpdate`, `uploadRnBundle`, `publishRnBundle`, `unpublishRnBundle`, `listRnBundles` |
|
|
|
|
|
|
|
|
|
|
|
|
## 群管理示例
|
2026-05-05 23:32:06 +08:00
|
|
|
|
|
|
|
|
|
|
```java
|
2026-05-08 18:32:00 +08:00
|
|
|
|
import com.xuqm.im.sdk.XuqmImServerSdk.GroupView;
|
2026-05-05 23:32:06 +08:00
|
|
|
|
|
2026-05-08 18:32:00 +08:00
|
|
|
|
GroupView group = client.createGroup("项目讨论", List.of("user_001", "user_002"), "NORMAL");
|
2026-05-05 23:32:06 +08:00
|
|
|
|
|
|
|
|
|
|
client.addGroupMember("group_xxx", "user_003");
|
|
|
|
|
|
client.removeGroupMember("group_xxx", "user_003");
|
|
|
|
|
|
|
2026-05-08 18:32:00 +08:00
|
|
|
|
List<GroupView> groups = client.listGroups();
|
2026-05-05 23:32:06 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Push 推送
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
|
import com.xuqm.sdk.server.model.SendPushRequest;
|
|
|
|
|
|
|
|
|
|
|
|
client.sendPush(SendPushRequest.builder()
|
|
|
|
|
|
.userId("user_001")
|
|
|
|
|
|
.title("新消息")
|
|
|
|
|
|
.body("你有一条未读消息")
|
|
|
|
|
|
.payload("{\"chatId\":\"user_002\"}")
|
|
|
|
|
|
.build());
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 错误处理
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
2026-05-08 18:32:00 +08:00
|
|
|
|
import com.xuqm.im.sdk.XuqmImServerSdk.ImSdkException;
|
2026-05-05 23:32:06 +08:00
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
ImMessage msg = client.sendMessage(request);
|
2026-05-08 18:32:00 +08:00
|
|
|
|
} catch (ImSdkException e) {
|
2026-05-05 23:32:06 +08:00
|
|
|
|
System.err.printf("API 错误: status=%d, code=%d, message=%s%n",
|
|
|
|
|
|
e.getHttpStatus(), e.getCode(), e.getMessage());
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
[→ Server API 文档](/server/api)
|