# 接入流程

本文说明公有化和私有化两种接入流程。

## 公有化流程

1. 访问 <https://dev.xuqinmin.com>。
2. 注册开发者账号。
3. 创建应用并获取 `appKey`。
4. 业务服务端保存 `appSecret`。
5. 客户端使用公有化 SDK 初始化。
6. 业务服务端签发 `UserSig`。
7. 客户端登录 SDK 并开始收发消息。

## 私有化流程

1. 运维在私有化部署仓库执行一键部署。
2. 部署脚本先选择 MySQL/Redis 模式：客户自备连接，或由脚本新建并完成数据库、账号、密码和服务配置。
3. 部署脚本使用 MySQL、Redis、域名、证书、SMTP 和厂商凭证完成配置。
4. 系统初始化内置主租户、运营管理员和默认应用。
5. 文档站生成私有化 SDK 接入示例。
6. 客户端集成私有化 SDK。
7. 客户端使用 `xuqm-private-sdk.json` 初始化。
8. 业务服务端签发 `UserSig`。
9. 客户端登录 SDK 并使用 IM、Push、Update、File、License、BugCollect 能力。

## 服务端签发 UserSig

服务端可以通过服务端 SDK 本地生成 `UserSig`，也可以调用平台接口生成。`appSecret` 必须只保存在服务端。

```text
业务服务端
  -> 持有 appKey / appSecret
  -> 根据业务用户 ID 签发 UserSig
  -> 返回给客户端
```

## 客户端登录

```text
客户端
  -> 业务登录成功
  -> 获取 userSig
  -> XuqmSDK.login(userId, userSig)
  -> IM WebSocket 连接
  -> Push / Update / License / BugCollect 模块按需工作
```

## 私有化注意事项

1. 私有化环境不开放主租户注册。
2. 私有化 SDK 不使用 `dev.xuqinmin.com` 作为默认地址。
3. 厂商推送和应用市场自动发布需要客户网络放通厂商公网 API。
4. MySQL、Redis 可由客户提供连接，也可选择由部署脚本新建；客户自备模式只做连接校验，脚本新建模式由部署脚本负责安装、初始化和健康检查。

[快速开始](./quickstart)
